メモリ アナライザー ツールを使用して、メモリ リークを検出しました。java.util.WeakHashMap$Entry クラス java.lang.Class @ 0x3790f200 System Class のような結果を得ました。ネイティブ スタックはほとんどのヒープ スペースを保持しています。これがどのオブジェクトであるかを識別する方法は?
質問する
401 次
1 に答える
1
その特定のオブジェクト (アドレス 0x3790f200) を調べたい場合は、メモリ アナライザー ツールのツールバーにある虫眼鏡アイコンをクリックし、アドレスを入力します。オブジェクトが表示されたら、それを右クリックして [保持セットを表示] を選択します。これにより、最初のオブジェクト (@0x3790f200) によってメモリに保持されているすべてのオブジェクト (タイプ別にグループ化) を示す新しいヒストグラム テーブルが開きます。[最小保持サイズの計算] (ツールバーまたはコンテキスト メニューから) を選択すると、保持ヒープ列がテーブルに追加されます。列ヘッダーをクリックしてテーブルをソートすると、どのオブジェクトが大量のメモリを保持しているかを確認できます。
その時点から、コンテキスト メニューから「発信参照を持つオブジェクトを一覧表示」などのコマンドを使用して、個々のオブジェクトを調べてさらに調査することができます。また、インスペクタ ウィンドウは、個々のオブジェクトのフィールドを確認するのに役立ちます。これが少し役立つことを願っています。
于 2012-11-16T14:47:50.930 に答える