1

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

探查器可能是一种方法。即使它在显示包含地图的对象大小时可能不显示对象的大小。可以单独获取对象本身的大小,然后将其相加。任何想法?

4

1 回答 1

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();
}

于 2011-03-01T20:43:57.410 回答