0

ツリーのような階層で何千ものオブジェクトを初期化する Java プロジェクトがあります。

当初、私はパフォーマンスを念頭に置いてプログラミングしていたので、クラス フィールド (変数) に多くの計算可能なプロパティを格納することを気にしませんでした。
しかし、最近、プロジェクトのメモリ フットプリントを見積もろうとし始めたところ、非常に大きいことがわかりました。大きい。

どのクラスが最も多くのメモリ
を消費しているかを特定しようとしています。その後、どのフィールドが最も消費されているか (おそらく文字列) に絞り込むことができると思います。

instrumentation私はJavaのパッケージに出くわし、getObjectSize

ドキュメントを理解しようとしましたがinstrumentation、自分の仕事に適しているかどうかわかりません。サイズが再帰的に見つからない
ことにも気付きました。getObjectSize

Objectの静的マップを拡張して含むクラスを作成し、instance -> instanceSizeすべてのクラスにこのクラスを拡張させ、コンストラクターを更新することを考えていました

私のアプローチは正しいですか?
これを達成するための最も「Java」な方法は何でしょうか?

4

1 に答える 1

1

ええと、コーディング ツールを置いて、メモリ プロファイラーを手に入れてください。そこには素晴らしい無料のものがあります。

于 2013-08-20T01:06:23.227 に答える