6

ASANT を使用して、NARS.jar ファイルを指す xml ファイルを実行しています。

「java.lang.OutOfMemoryError: Java heap space」が表示され、これについて調査しています。

そのため、分析するダンプ ファイルを作成するには、「-XX:+HeapDumpOnOutOfMemoryError」を設定する必要があることがわかりました。

ASANT.bat を編集し、「-XX:+HeapDumpOnOutOfMemoryError」を ANT_OPTS に追加しました。

set ANT_OPTS= "-XX:+HeapDumpOnOutOfMemoryError" "-Dos.name=Windows_NT" "-Djava.library.path=%AS_INSTALL%\lib;%AS_ICU_LIB%;%AS_NSS%" "-Dcom.sun.aas.installRoot=%AS_INSTALL%" "-Dcom.sun.aas.instanceRoot=%AS_INSTALL%" "-Dcom.sun.aas.instanceName=server" "-Dcom.sun.aas.configRoot=%AS_CONFIG%" "-Dcom.sun.aas.processLauncher=SE" "-Dderby.root=%AS_DERBY_INSTALL%"  

しかし、ダンプファイルが見つからないようです。ダンプが見つかったら、Eclipse Memory Analyzer を使用して分析します。

また、「-XX:HeapDumpPath=c:\memdump\bds.hprof」オプションを設定しようとしましたが、そこにはダンプが作成されませんでした。

誰かが私が間違っていることを理解していますか? 前もって感謝します

4

5 に答える 5

2

アプリケーションが Windows で実行されているようです。Windows ファイル パスは、\. あなたの例によると、 -XX:HeapDumpPath は次のようになります。

-XX:HeapDumpPath=c:\\memdump\\bds.hprof

「-XX:+HeapDumpOnOutOfMemoryError」以外にも、ヒープ ダンプを取得するためのオプションがいくつかあります。

于 2018-03-30T10:46:38.230 に答える
1

ANT が OOME のプロセスであると確信していますか? ANTによって開始されたプロセスである可能性があります。

デバッグ情報のために、ANT_OPTS に「-debug」を追加します。

実行中にターゲットが出力されていますか?

ant によって開始されたさまざまなプロセスを fork することもできます (速度は低下しますが、原因を特定するのに役立つ場合があります)。

最後に、デフォルトよりも多くのメモリが必要な場合があります。追加:

-Xms256m -Xmx512m -XX:PermSize=64m -XX:MaxPermSize=256m

ANT_OPTSへ

于 2010-03-09T19:05:50.383 に答える
1

SUN の VisualVM を使用してヒープダ​​ンプを取得し、ライブで確認できることがわかりました。

簡単な解決策

于 2010-03-09T14:27:17.783 に答える
1

これは、アプリケーションの作業ディレクトリ (つまり、アプリケーションを開始した場所) にあります。プロセスに必要な権限がない場合、どうなるかわかりません。おそらく、ダンプの書き込みは黙って失敗するでしょう。

于 2010-03-09T14:37:33.320 に答える
-1

うーん... java.io.tmpdir が指している場所はどうですか?

于 2010-03-09T14:05:39.503 に答える