我正在计算 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 以获取大小
我正在寻找任何人在性能、效率、扩展等方面有这些方法的经验,或者如果你知道任何更好的方法。
PS:这是我正在构建的后台实用程序,因此大小不需要非常准确,尽管它应该是正确的。所以我愿意用准确性来换取性能
我对 deep-size 不感兴趣 [不会计算此对象引用的对象的大小。]
我正在寻找性能比较并了解 getObjectSize() 如何在内部工作..这样我就不会弄乱其他东西来提高性能
谢谢