2011-07-05 14 views
3

私は、JDK 1.6でWindows 2008を実行している春のエンタープライズアプリケーションを持っています。このアプリケーションは、ランダムな時間に遅くなったり応答しなくなったりします。私はそれがメモリリークであり、GCがオーバードライブになっていると思われます。断続的なガベージコレクションの問題を解決する - Java

java.exe -verbose:gcパラメータを使用してJVMを再起動せずにこの問題のトラブルシューティングを行うにはどうすればよいですか?私は本当にこのアプリをシャットダウンできません。 AppDynamicsを再起動するとAppDynamicsを実行する予定ですが、何ができるのでしょうか?私の選択肢は何ですか?

答えて

3

アプリケーションを起動し、PIDでjconsoleを実行します。実行中はコンソールのヒープを見ている間。最大値近くになるとヒープダンプが発生します。 Eclipse MATをダウンロードし、ヒープ・ダンプを解析します。保持されているヒープ・サイズが大幅に小さいことに気づいた場合、実際のバイナリ・ファイルは、-keep_unreachable_objectsを設定してヒープ・ダンプを解析します。

後者が真であり、完全なGCを頻繁に行っていると、何らかのリークが発生する可能性があります。 GCがメモリを保持できないリークを意味するのではなく、大規模なオブジェクトを構築してGCに多くのCPU時間を消費させるほど頻繁にアクセスできないようにすることを意味するわけではありません。

あなたは真のメモリリークを見ていた場合は、頭の上にGCを見ることが

+0

jvisualvmは、この多くのを助けることができることをメモして、エラーに達しました。 –

+0

@Mat Banik PIDを正しく取得する明確な方法はありません。私は通常、アプリケーションを起動し、どの新しいjava.exeが起動したかを監視します。また、ほとんどの仮想メモリを持つものは、通常、私がこのような状況でどこを見ているかを指しています –

関連する問題