28

"Eclipse" IDE で新しいプロジェクトを作成すると、突然 "メモリ不足エラー" という警告メッセージが表示されます。理由を特定できません。理由を知っている人がいたら教えてください。

4

6 に答える 6

23

次のパラメーターを使用して日食を開始してみてください。

eclipse.exe -vmargs -Xms512m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=128m

または、要件に合わせてこれらのパラメーターを正当化します

于 2011-07-25T12:42:23.007 に答える
19
  1. Eclipse セットアップ フォルダーに移動します。
  2. Mac OS X で Eclipse を実行している場合は、

    eclipse.appアイコンを右クリック

    クリックShow Package Contents

  3. eclipse.iniファイルを開く

  4. 以下のパラメータを変更

    -Xms512m
    -Xmx3000m (Hoping your developer box has >4GB of memory)
    
  5. 以下のパラメータを追加

    -XX:PermSize=256m
    -XX:MaxPermSize=512m
    
于 2016-03-22T19:37:34.077 に答える
4

最も明白な説明は、あなたが本当に記憶がないということです。その場合、より大きなヒープで Eclipse を起動すると役立つはずです

 -vmargs -Xmx256M

256M を変更して、何があなたに適しているかを確認してください。

いくつかの単純なプロジェクトしかない場合、この問題が発生することはないと思います。追加のプラグインを使用している場合は、必要なヒープの量を増やす必要があるかもしれません。

于 2011-07-25T12:42:52.823 に答える
2

あなたの問題に関連するかどうかはわかりませんが、OpenJDK 7 を使用する Swing プロジェクトで同様の問題が発生しました。

Runアプリケーションの開始 (ボタン) と終了 ( 'X'/ )を数回繰り返した後Alt+F4、コンソールに次のエラーが表示されました。

Exception in thread "main" java.lang.OutOfMemoryError: unable to create new native thread
    at java.lang.Thread.start0(Native Method)
    at java.lang.Thread.start(Thread.java:691)
    at sun.awt.AWTAutoShutdown.activateBlockerThread(AWTAutoShutdown.java:334)
    at sun.awt.AWTAutoShutdown.notifyPeerMapUpdated(AWTAutoShutdown.java:215)
    at sun.awt.AWTAutoShutdown.registerPeer(AWTAutoShutdown.java:348)
    at sun.awt.SunToolkit.targetCreatedPeer(SunToolkit.java:313)
    at sun.awt.X11.XToolkit.createFrame(XToolkit.java:410)
    at java.awt.Frame.addNotify(Frame.java:477)
    at java.awt.Window.show(Window.java:1031)
    at java.awt.Component.show(Component.java:1651)
    at java.awt.Component.setVisible(Component.java:1603)
    at java.awt.Window.setVisible(Window.java:1014)
    at tool.BAT.main(BAT.java:11)

そして時々、別の種類のエラーが発生しました:

Error occurred during initialization of VM
java.lang.OutOfMemoryError: unable to create new native thread

そして、もう一度実行しようとすると、Java がクラッシュしました。

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x0000000000000000, pid=30388, tid=139776854689536
#
# JRE version: 7.0_07-b30
# Java VM: OpenJDK 64-Bit Server VM (23.2-b09 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C  0x0000000000000000
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /home/mcmlxxxvi/workspace/bat/hs_err_pid30388.log
#
# If you would like to submit a bug report, please include
# instructions on how to reproduce the bug and visit:
#   http://icedtea.classpath.org/bugzilla
#

top問題の原因を明らかにしました(仮想メモリの使用量に注意してください):

PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND
30619 mcmlxxxv  20   0 3271m 390m  45m S   2.0 13.0   0:38.88 java
30667 mcmlxxxv  20   0 2172m  35m  12m S   0.3  1.2   0:01.00 java
30688 mcmlxxxv  20   0 2172m  35m  12m S   0.3  1.2   0:00.96 java
30710 mcmlxxxv  20   0 2172m  35m  12m S   0.0  1.2   0:00.97 java   

これらはすべて、閉じられていない私のアプリケーションのインスタンスでした。インスタンスごとに非常に多くの仮想メモリが割り当てられた理由はまだわかりません-おそらくそのためのオプションがあります。(ちなみに、私は3GiBの物理メモリを持っています)。

ここに私の main() メソッドがあります:

public static void main(String[] args) {
    JFrame frame = new JFrame();
    //frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(400, 300);
    frame.setVisible(true);
}

チュートリアルでコメント行を見て、具体的に無効にして、何が起こるかを確認しました。何が起こったのかというと、デフォルトで に設定されHIDE_ON_CLOSE、フレームを閉じて破棄しませんでした。

EXIT_ON_CLOSEに設定setDefaultCloseOperationすることが私にとっての解決策でした。ただし、これについてより知識のある人々からの意見を聞くことに興味があります。

于 2012-10-05T23:24:38.447 に答える
2
  • eclipse.ini ファイルを開きます
  • XXMaxPermSize は 256m になります。
  • 値を 512m に変更します。
  • 日食を再開します。
  • これで、Eclipse でメモリの問題は発生しなくなります。

以下を参照してください。

--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m

後:

--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
512M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
512m
于 2019-04-17T06:11:19.187 に答える