ツリーのような階層で何千ものオブジェクトを初期化する Java プロジェクトがあります。
当初、私はパフォーマンスを念頭に置いてプログラミングしていたので、クラス フィールド (変数) に多くの計算可能なプロパティを格納することを気にしませんでした。
しかし、最近、プロジェクトのメモリ フットプリントを見積もろうとし始めたところ、非常に大きいことがわかりました。大きい。
どのクラスが最も多くのメモリ
を消費しているかを特定しようとしています。その後、どのフィールドが最も消費されているか (おそらく文字列) に絞り込むことができると思います。
instrumentation
私はJavaのパッケージに出くわし、getObjectSize
ドキュメントを理解しようとしましたがinstrumentation
、自分の仕事に適しているかどうかわかりません。サイズが再帰的に見つからない
ことにも気付きました。getObjectSize
Object
の静的マップを拡張して含むクラスを作成し、instance -> instanceSize
すべてのクラスにこのクラスを拡張させ、コンストラクターを更新することを考えていました
私のアプローチは正しいですか?
これを達成するための最も「Java」な方法は何でしょうか?