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

发布于 2024-10-20 08:29:52 字数 228 浏览 3 评论 0原文

测量内存中 Map 的大小,包括它所持有的所有对象的大小。 这似乎并不直接。对象本身的大小可能会返回浅层大小,而不是实际大小。 有人建议我们可以使对象可序列化来获取大小。这可能会给出尺寸。如果可序列化对象只有那个Map,那么是否可以获得Map中对象的数量以及它所持有的所有对象的大小?

分析器可能是一种可行的方法。即使它可能不显示对象的大小,而显示包含地图的对象的大小。可以单独获取对象本身的大小,然后将其相加。有什么想法吗?

Measure size of Map in memory including the size of all the objects it is holding.
It doesn't seem to be straight forward. Size of the object itself might return shallow size as oppose to the actual size.
Somebody suggested that we can make the object serializable to get the size. That might give the size. If the serializable object has only that Map, will it be then possible to get the count of the object in the map and the sizes of all the objects it is holding?

The profiler may be a way to go. Even if it may not show the size of objects while showing the size of object containing map. The size of the objects itself may be obtained separately and then added up. Any idea?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

记忆消瘦 2024-10-27 08:29:52

可序列化的,请使用 java.io.ByteArrayOutputStream 和 java.io.ObjectOutputStream

如果这是在 Java 中,并且对象是
公共静态 int 测量(对象 m) 抛出异常 {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    ObjectOutputStream oos = new ObjectOutputStream(baos);
    oos.writeObject(m);
    return baos.size();
}

If this is in Java, and if the object is Serializable, use java.io.ByteArrayOutputStream and 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();
}

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文