2012-09-26 17 views
7

Jvisualvmヒープ・ダンプ・ダンプ・サマリー・タブには、保持されているサイズで最も大きなオブジェクトを検査する機能があります。jVisualVMのメモリインスペクタで「保持サイズ」とは何ですか?

本当に保持されるのは何ですか?オブジェクトツリーのサイズはどのように計算され、ここに表示されますか?
ここではobject(10M)とそれがメンバオブジェクト(5M)であることがわかりますが、どのようにヒープの影響を計算すればいいですか?両方とも10Mまたは15Mのヒープを奪ったか?
なぜ私はファサードの巨大なアプリケーションオブジェクトのどれも見ることができないのですか?

ありがとうございました。

答えて

7

実際に保持されるものは何ですか?

完全なgcの後にどのくらいの大きさになるか。例えば。多数のエントリを持つWeakHashMapは、GC後に空になる可能性があります。

ここでオブジェクトツリーのサイズを計算して示しますか?

JVMは内部APIを使用してこれを判断します。

ここでは、オブジェクト(10M)とそのメンバオブジェクト(5M)がわかりますが、ヒープの影響をどのように計算すればよいですか。両方とも10Mまたは15Mのヒープを奪ったか?

合計は10 MBです。これがあなたの最大の問題であれば、わずか100 MBのマシンを持っていなければ心配する必要はありません。 (その場合、私はそれをアップグレードします)

なぜ私はファサードの巨大なアプリケーションオブジェクトを見ることができませんか?

おそらく、彼らはあなたが思うほど大きなメモリではないでしょうか?例えば彼らは負荷がかかるかもしれませんが、それはそれらを巨大にしません。

BTW:VisualVMは素晴らしいフリーメモリプロファイラですが、明らかな問題を見つけるためにのみ役立ちます。比較のためYourKitのような商用プロファイラを試してみましょう。

+0

ファサードオブジェクトには大きなチャーシオブジェクトへのリンクが含まれています。 jvisuavmでは、キャッシュオブジェクトを一番上に見ることができますが、少なくとも同じサイズでなければならないファサードオブジェクトを見ることはできません。 –

+0

私はあなたの状況、私はそれがあなたに別の視点を与えるかどうかを見るために商業プロファイラーを試してみましょう。異なるプロファイラーが異なる動作をするため、複数のアプリケーションを実行すると、適切な結果を得ていると確信できない場合に役立ちます。 –

関連する問題