私は jvm プロセスを実行していましたが、ある日、メモリ不足の例外が発生しました。ログには、多くのメモリ不足エラーが見つかりました::
-bash-3.00# grep OutOfMemoryError AdminServer.log00399 java.lang.OutOfMemoryError: Java heap space java.lang.OutOfMemoryError: Java heap space java.lang.OutOfMemoryError: Java heap space ####<2013-6-28 05:09:27 pm CST> <Error> <Server> <kfmsapp2> <AdminServer> <DynamicListenThread[Default[3]]> <<WLS Kernel>> <> <>
<1372410567863>
heapdump ファイルも生成されました。マットを使用して分析した後、スレッドからの大きなオブジェクトであることがわかりました。休止状態の共通オブジェクトorg.hibernate.engine.PersistenceContext
であることはわかっていますが、どこから来たのかはわかりません。
小さなプログラムを書きたいのですが、メモリ不足エラーが発生したときにスレッドダンプ ファイルを自動的に生成します。
私の質問は、スレッド ダンプを正確に取得するのに最適な実行中のプログラムの時間はいつですか? ログ ファイルに最初にメモリ不足エラーが表示されますか?