4

Jmap で取得したオブジェクト ヒープ ダンプがあります。私はまた、Jhat を介してダンプを見てきました。オブジェクトのサイズを計算する必要があります。どうすればいいのですか?

ダンプでは、たとえば次のように表示されます。

Class Name,                    total objects,          total size
com.test.app.CallRecord ,             2194       ,            446324

したがって、446324/2194 = 203 を計算すると、203 バイトが 1 つの CallRecord オブジェクトのサイズになります。そうですか?私はここで混乱しています。このサイズは何ですか?参照のサイズも含まれますか?

よくわかりません。CallRecord オブジェクトのサイズを教えてほしいという依頼がありました。203バイトと伝えるべきですか?それが正しいかどうかはわかりません。

203 バイトには、CallRecord オブジェクトにも含まれる参照のサイズが含まれますか?

計算方法は?

4

2 に答える 2

2

合計サイズがシャローサイズか保持サイズかによります。

  1. 浅いサイズ

    オブジェクトの浅いサイズは、オブジェクト自体を格納するために使用されるメモリの量です。参照されるオブジェクトは考慮されません。

  2. 保持サイズ

    オブジェクトの保持サイズは、オブジェクトがガベージコレクターによって収集されるときに解放できるメモリの量です。

于 2012-09-06T10:23:38.500 に答える
2

ある種のメモリ分析ツール (プロファイラー) を使用することをお勧めします。YourKit はこれに最適ですが、非常にコストがかかります。Eclipse MAT も優れており、無料です。VisualVM は非常にシンプルですが、十分に優れており、無料でもあります.. (私はそれらすべてを使用してしまうことがよくあります..

于 2012-09-06T10:12:07.853 に答える