在Java中,是否有一种方法可以从序列化对象的大小粗略估算内存对象的大小?
Instrumentation.getObjectSize(object)
的工具。length
。大多数 JVM 都是 8 字节对齐的,因此您需要将其舍入到下一个 8 字节。 - Peter Lawrey这是一个非常好的工具,可以帮助解决这个挑战:
https://github.com/jbellis/jamm从readme.txt中得知:
MemoryMeter与java.lang.instrument.Instrumentation.getObjectSize一样准确,后者只声称提供“近似”结果,但在实践中似乎能够正常工作。
MemoryMeter使用反射来遍历对象图以进行measureDeep。反射很慢:测量一个包含100万个对象的Cassandra Memtable(即MemoryMeter.countChildren的1百万个子项)需要大约5秒钟的墙钟时间。