5

MyEclipse から GA/AI を実行またはデバッグすると、次のエラーが発生します。

スレッド「メイン」の例外 java.lang.OutOfMemoryError: Java ヒープ領域

eclipse.ini は次のようになります。

-showsplash com.genuitec.myeclipse.product
--launcher.XXMaxPermSize 256m
-vmargs
-Xms128m
-Xmx512m
-Duser.language=en 
-XX:PermSize=128M 
-XX:MaxPermSize=256M

MyEclipse は次のように呼び出されます。

"C:\Program Files\MyEclipse 6.0\eclipse\eclipse.exe" -vm "C:\Program Files\MyEclipse 6.0\jre\bin\javaw.exe"  -vmargs -Xms1448M -Xmx1448M

これからVM設定を上げます:

"C:\Program Files\MyEclipse 6.0\eclipse\eclipse.exe" -vm "C:\Program Files\MyEclipse 6.0\jre\bin\javaw.exe"  -vmargs -Xms80M -Xmx1024M

効果はありませんでした。だから私はヒープをファイルにダンプするようにしようとしていますが、これらを配置しています:

-XX:+HeapDumpOnCtrlBreak
-XX:+HeapDumpOnOutOfMemoryError

プログラムの引数は効果がありませんでした。より多くのメモリ使用量の分析で何かを動作させるにはどうすればよいですか? たとえば、jstack は現在、Windows プラットフォームでは使用できません。SendSignal を使用しても、目に見える効果はありません。

スクリーンショット

4

3 に答える 3

11

ヒープ ダンプを取得する方法はいくつかあります。ここに私が使用したいくつかがあります:

  1. -XX:+HeapDumpOnOutOfMemoryError OOMにヒットした場合は、ダンプする必要があります
  2. VisualVM (無料) に接続し、その GUI を使用してヒープ ダンプを強制します
  3. 多くの優れた商用プロファイラー (JProfiler、YourKit など) のいずれかを使用します。
  4. jmap (以下を参照) を使用して、実行中のプロセスから強制的にダンプします

Java 6 を実行している場合、jmapは Windows で動作するはずです。これは、ヒープをダンプしたいが OOM にヒットしていない場合に便利です。Windows タスク マネージャーを使用して Java アプリの pid を見つけ、コンソールで次を実行します。

jmap -dump:format=b,file=c:\heap.bin <pid>

VisualVM に加えて、Eclipse メモリ アナライザー(これも無料) を使用すると、ダンプを取得したら、何がすべてのスペースを占有しているかを分析できます。

于 2009-05-08T04:56:22.307 に答える
2

-XX:+HeapDumpOnOutOfMemoryErrorVM Arguments" " ではなく " "Program Argumentsに入れる必要があります

于 2012-10-19T09:34:12.350 に答える
1

JConsole でメモリ使用量を監視できます。

jstatも役立ちます

于 2009-05-08T04:15:19.160 に答える