1

保持しているすべてのオブジェクトのサイズを含む、メモリ内の Map のサイズを測定します。一筋縄ではいかないようです。オブジェクト自体のサイズは、実際のサイズとは対照的に浅いサイズを返す場合があります。サイズを取得するためにオブジェクトをシリアライズ可能にすることができると誰かが提案しました。それはサイズを与えるかもしれません。シリアライズ可能なオブジェクトがそのマップしか持たない場合、マップ内のオブジェクトの数とそれが保持しているすべてのオブジェクトのサイズを取得することは可能でしょうか?

プロファイラーは、行く方法かもしれません。マップを含むオブジェクトのサイズを表示しながら、オブジェクトのサイズを表示しない場合があります。オブジェクト自体のサイズは、個別に取得してから合計することができます。何か案が?

4

1 に答える 1

0

これが Java であり、オブジェクトがシリアライズ可能である場合は、 and を使用java.io.ByteArrayOutputStreamします。java.io.ObjectOutputStream

public static int measure(Object m) throws Exception {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    ObjectOutputStream oos = new ObjectOutputStream(baos);
    oos.writeObject(m);
    return baos.size();
}

于 2011-03-01T20:43:57.410 に答える