0

ヒープのOldGen部分にどのオブジェクトが存在するかを確認する方法はありますか?ヒープ(jmap)内のすべてのオブジェクトを表示する方法は知っていますが、PSOldGen内のオブジェクトのみを表示したいと思います。

そうする方法はありますか?

編集:私の問題と必要性についての説明

私のアプリケーションには非常に大きなヒープが必要です(-XmX30Gを使用した本番環境で使用されます)。完全なガベージコレクションが原因で、約20分ごとにアプリケーションが約20秒間ハングするという問題があります。Old genに移行するのに十分な時間存続し、その後ガベージコレクションを取得するオブジェクトは何かを確認したいと思います。どのアプローチを取るべきですか?

ありがとう

4

2 に答える 2

0

ヒープを詳しく調べるには、 JProfilerJprobeなどの優れたプロファイリング ツールを使用する必要があり ます。ガベージコレクションが行われず、ヒープを占有しているオブジェクトを確認できます。ゆっくりと収集されないオブジェクトは、古い世代空間に移動し続けます。オブジェクトの年齢を確認することはできず、より古い世代の空間にあるオブジェクトを特定できます。

于 2012-08-30T06:39:07.067 に答える
0

あなたの問題は何ですか?ヒープ サイズが大きいか、GC の一時停止が長くなりますか?

ヒープ サイズが大きい場合は、完全な GC の直後に jmap を使用してヒープ内のオブジェクトを検査し、それらがすべて必要かどうかを確認できます。まだ参照している余分なオブジェクトがある場合は、それに応じてコードを変更できます。

問題の原因が GC の一時停止にある場合は、完全な GC の前後に jmap 出力を取得し、それらの出力の違いを確認して、そのサイクルでガベージ コレクションされたオブジェクトの詳細を確認できます。これらのオブジェクトの作成元を追跡し、オブジェクト プーリングなどによってそれを回避できます。

于 2012-08-31T20:11:42.060 に答える