2016-03-25 5 views
0

私は、Javaのテーブルから行のセットを表すクラスを開発しています。行は、コンパクトまたは拡張形式のいずれかになります。関数呼び出しを使用して、オブジェクトの内部形式を検出できます。Javaにおけるメモリフットプリントの見積もり

コンパクトで拡張された形式でこのオブジェクトのメモリフットプリントを理解するための単体テストを作成しようとしていました。私はこのためにメモリメーターhttps://github.com/jbellis/jammを使用しました。私は、基本的なデータが異なる実行で同じままであっても、オブジェクトの深いサイズが異なって表示されていることに気づいた。私はこれと少し混乱しています。私の期待は、オブジェクトグラフをたどることによって、私はsizeof(オブジェクト)の正確な推定を得られるはずです。これは私が使用しているパッケージの問題か、間違っているのでしょうか?

答えて

1

テスト中のコードが遅延初期化を使用するか、テストケースが異なる操作を実行する場合、メモリ内の実際のインスタンスは、カウント、サイズ、時には偶数型で異なる場合があります。

異なる実行で同じテストケースが使用されていることを確認し、そうでない場合は、同じ入力でのメモリ消費量が同等であるとは想定しません。

+0

迅速な対応に感謝します。同じテストケースで「同等」と言う場合、同じ数字(たとえば、実行ごとに550バイト)または小さな違いを意味しますか? C++では、sizeof()は特定のプラットフォームで非常に正確な見積もりを提供します。 – ToyElephant

関連する問題