【发布时间】:2013-05-19 17:02:25
【问题描述】:
如果我在磁盘上获取大约 2kB 的 XML 文件,并将内容作为字符串加载到 Java 中的内存中,然后测量对象大小约为 33kB。
为什么尺寸会大幅增加?
如果我在 C++ 中做同样的事情,内存中的结果字符串对象更接近 2kB。
为了测量 Java 中的内存,我使用了Instrumentation。 对于 C++,我取序列化对象的长度(例如字符串)。
【问题讨论】:
-
你是如何测量内存大小的?
-
你如何将它存储在java中的内存中。此外,Java 的每个对象的开销约为 16 个字节,因此如果您有很多小字符串对象,您的开销将非常高!!!
-
我期望和开销,但不是~30kB
-
@imrichardcole 您能否发布您用于测量内存大小的 java/c++ 代码。在不知道您是否首先正确测量它们的情况下,任何人都无法回答这个问题
-
你能描述一下你想出 33KB 的方法吗?我相信您找到的大小可能不是字符串本身的大小。