【发布时间】:2011-04-28 08:32:24
【问题描述】:
我正在计算 java 对象 [hashmap] 的大小 [memory used]。它包含不同数据类型的元素 [在运行时],因此 [ no-of-elem * size-of-element] 不是那么好的方法。现在的代码是通过一系列
if (x)
do something
else if (primitives)
lookup size and calculate
但是,此过程占用大量 CPU 且效率低下。
我正在考虑以下两种方法:
- 将对象序列化为缓冲区并获取大小。
- 查看 java.lang.instrument 以获取大小
我正在寻找任何人在性能、效率、扩展等方面有使用这些方法的经验,或者如果你知道任何更好的方法。
附注: 这是我正在构建的后台实用程序,因此大小不需要非常准确,尽管它应该是正确的。所以我愿意用准确性来换取性能
我对 deep-size 不感兴趣[不会计算此对象引用的对象的大小。]
我正在寻找性能比较并了解 getObjectSize() 在内部如何工作..这样我就不会为了提高性能而搞砸其他东西
谢谢
【问题讨论】:
-
您所说的尺寸究竟是什么意思?占用的内存量?包含的元素数量?
-
按大小,我的意思是占用的内存量.. 编辑以反映这一点
-
或多或少相同的问题:stackoverflow.com/questions/757300/…
标签: java serialization instrumentation