map使用的内存大小,包括它携带的所有对象

时间:2011-03-01 20:23:54

标签: memory-size

测量内存中Map的大小,包括它所持有的所有对象的大小。 它似乎并不是直截了当的。对象本身的大小可能会返回浅的大小,与实际大小相反。 有人建议我们可以使对象序列化以获得大小。这可能会给出规模。如果可序列化对象只有那个Map,那么是否可以获取地图中对象的计数以及它所持有的所有对象的大小?

探查器可能是一种方法。即使它在显示包含地图的对象的大小时也可能不显示对象的大小。对象本身的大小可以单独获得,然后相加。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

如果这是在Java中,并且对象是可序列化的,请使用java.io.ByteArrayOutputStreamjava.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();
}