作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个通过 Jmap 获取的对象堆转储。我还通过 Jhat 看到了转储。我需要计算对象的大小。我该怎么做?
在转储中我可以看到例如:
Class Name, total objects, total size
com.test.app.CallRecord , 2194 , 446324
所以如果我计算 446324/2194 = 203。那么 203 字节就是 1 个 CallRecord 对象的大小。是这样吗?我在这里很困惑。这个尺寸是多少?它是否也包括引用文献的大小?
我很困惑。有人要我让他们知道 CallRecord 对象的大小。我应该告诉他们 203 字节吗?不知道对不对。
203 字节是否包含 CallRecord 对象下引用的大小?
如何计算?
最佳答案
这取决于总尺寸是浅尺寸还是保留尺寸。
浅尺寸
对象的浅表大小是用于存储对象本身的内存量。不考虑引用的对象。
保留大小
对象的保留大小是当对象被垃圾收集器收集时可以释放的内存量。
关于java - 如何从堆转储中计算对象大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12297299/
我是一名优秀的程序员,十分优秀!