据我所知,众所周知的 Instrumentation Java 方法无法正确计算对象的深度大小。
是否有可靠的方法在 JVM 上计算对象的正确深度大小?
我正在考虑的用例是固定(或上限)内存大小的数据结构,即缓存。
注意:尽可能,我想要一个企业级解决方案,所以要么是“标准”编码实践,要么是经过良好测试的库
我知道众所周知的 Instrumentation Java 方法无法正确计算对象的深度大小。
仅凭仪器,不会。
通过仪器和对特定 JVM 内存如何布局的了解,您将获得所使用的字节数。它不会告诉您其他 JVM 是如何工作的,也不会告诉您共享了多少数据。
是否有可靠的方法在 JVM 上计算对象的正确深度大小?
我使用分析器,但除非您相信您使用的某些工具,否则您永远无法知道。
我正在考虑的用例是固定(或上限)内存大小的数据结构,即缓存。
为了精确的内存使用,您愿意将缓存设置得有多慢?如果它慢 10 倍或 100 倍,但使用非常准确,这是否比仅计算元素数量的方法更好?
所以要么是“标准”编码实践,要么是经过良好测试的库
在这种情况下,请使用元素计数。您可以使用 LinkedHashMap 或 ehcache 来实现此目的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)