2

JVM が「ハング」することがある Java コードがあります。jvisualvmこれが発生すると、 (ツールは「接続がタイムアウトしました」と表示されます)などのツールを介して通信できず、スレッドダンプを出力したり、 SIGQUIT( kill -3) を発行しても終了しません。SIGABRT ( kill -6) を発行すると、プロセスは終了します。

したがって、スレッド ダンプを取得することも、メモリの内容を確認することもできません。この状況で、どうすればより多くの情報を入手できますか? それが役立つ場合、OSはそうでOSXあり、私のJVMバージョンは
Java(TM) SE Runtime Environment (build 1.6.0_51-b11-457-11M4509) Java HotSpot(TM) 64-Bit Server VM (build 20.51-b01-457, mixed mode)

4

1 に答える 1

1

これが「ハング」と呼ばれる理由です。内部の問題 (無限ループ、デッドロックなど) が原因で JVM プロセスが応答しないため、応答しません。これは、JVM 実装のバグが原因である可能性があります。JVM をデバッグして、何が起こっているかを調べることができます。HotSpot は GPL であるため、ソース コードも入手できます。

コード内の何かがこのハングの原因であると思われる場合 (たとえば、特定の操作を実行すると JVM が常にハングするなど)、それを貼り付けて確認できます。

于 2013-07-23T17:42:55.257 に答える