私のプログラムは無限ループに入っているようですが、ヒープエラーなどは発生していません。それでも、ループがどこにあるのか知りたいです。
Eclipseを使用していて、通常モード(デバッグモードではない)で実行しています。また、私のプログラムは非決定論的であるため、無限ループを再作成するために再度実行することはできません。
無限ループを見つける方法はありますか?
1 つの方法は、無限ループが発生するまで待ってから、 を使用jstack -l <pid>
してスタック ダンプを取得し、それを分析することです。
少し運が良ければ、これはさらなる調査のいくつかの行を示唆するはずです.
プロファイラーVisualVMでアプリケーションを実行できると思います。無限ループを見つけるのに役立ちます(反復の分析、プロセスの読み込みなどのパラメーター)