2

アプリケーションのヒープダンプを分析するために Eclipse MAT を使用しています。これは、リークの疑いがあるクラスを示しています。1 つのインスタンス変数は、1 時間あたり数千のエントリを処理する静的ハッシュ マップとして宣言されます。疑わしいクラスのドミネーター ツリー ビューで、エントリの値が次のように見つかることがあります。

hashmap$entry->classname->value 

しかし、ほとんどの場合、

hashmap$entry->hashmap$entry->....->classname->value

この場合、一番上のhash$mappエントリは 20% の消費を示しています。クラス名に関連付けられているはhashmap$entry消費が少なく、上部と中間hashmap$entryは拡張できません。

私はそれが何を意味するのか混乱していますか?誰かがそれを説明したり、これらのことを説明できるドキュメントを提案したりできますか?事前に感謝します

4

1 に答える 1

0

Java HashMap クラスには、内部データ構造 Entry があります。(put() を介して) マップにエントリを追加すると、キーと値のペアを保持するエントリが作成されます。

同じハッシュを持つ 2 番目のキーが追加されると、エントリ構造が連鎖されます。同じエントリが何度も追加されると思いますが、キーに対して新しいオブジェクトが作成され、大規模な連鎖が発生します。

マップのキーと値に含まれるオブジェクトの種類がわかりますか?

于 2012-12-19T10:46:58.910 に答える