クラスがあり、このクラスのオブジェクトがシリアル化されたときに、どのサブオブジェクトが最も多くのスペースを占めるかを確認したいと思います。コードを見て手動で分析する以外に、それを行うための優れたツール/方法はありますか?
たとえば、ツールに「メンバーaが20%、bが30%、メンバーcが50%を占める」と言いたいとします。
ありがとう
PSいくつかの関連する質問を見つけましたが、そこで私の特定の質問に対する答えが見つかりませんでした。
クラスがあり、このクラスのオブジェクトがシリアル化されたときに、どのサブオブジェクトが最も多くのスペースを占めるかを確認したいと思います。コードを見て手動で分析する以外に、それを行うための優れたツール/方法はありますか?
たとえば、ツールに「メンバーaが20%、bが30%、メンバーcが50%を占める」と言いたいとします。
ありがとう
PSいくつかの関連する質問を見つけましたが、そこで私の特定の質問に対する答えが見つかりませんでした。
オブジェクトのサイズをカウントする唯一の比較的高速な方法は、最初にオブジェクト全体を書き込み、使用状況をカウント (たとえば、ByteArrayOutputStream への書き込み) してから、参照される各オブジェクトを書き込むことです。
考慮すべき点がいくつかあります。
プロトコルの説明については、この説明をお読みください。
ええと、そのようなツールについて聞いたことがありません。しかし、メモリ内のオブジェクト サイズとシリアル化されたオブジェクト サイズの間には何らかの関係があると思います。したがって、JDK または私のお気に入りのYourKit Profilerに含まれているプロファイラーVisualVMを使用してみることができます。