DDMS显示VM Heap选项卡中对象(即空对象)的最小大小为16个字节。但是struct Object
在dalvik源代码vm/oo/Object.h
中只有8个字节。为什么有差异?这与对齐问题有什么关系?Android/Dalvik中最小的对象大小
回答
简短回答:任何对象(类指针+锁定字)的8字节开销,以及基础的基于dlmalloc的堆分配机制的4或8字节开销。所有对象都以8字节的边界对齐,所以12字节的对象将有4个字节的填充。
我认为dlmalloc对每个分配的内存有一定的开销。但是DDMS在报告内存使用情况时如何考虑这一点?我想这个计算应该在Dalvik里面完成,但我还没有找到确切的源代码。 – Cyker
'dalvik/docs/debugmon.html'(http://milk.com/kodebase/dalvik-docs-mirror/docs/debugmon.html)描述协议 - 查找HPSG块。 'dalvik/vm/alloc/DdmHeap.cpp'生成数据;它计算一个对象的大小,然后在所有内容中加上HEAP_SOURCE_CHUNK_OVERHEAD(4个字节)。这对于所有对象都是不正确的,但它是一个合理的近似值。 – fadden
- 1. 堆中Java最大对象大小
- 2. AppFabric的最大对象大小
- 3. 最大OpenGL FrameBuffer对象大小限制?
- 4. 亚马逊S3。最大对象大小
- 5. JavaScript对象最大大小限制
- 6. Go中对象的大小
- 7. 控制Sprite对象的最终大小
- 8. 如果知道最大堆大小,如何计算最大对象大小?
- 9. Ceph对象存储(RADOS)中对象的最佳大小
- 10. Fabric.js对象大小
- 11. JavaScript - 对象大小
- 12. Java'Date'对象大小
- 13. 最小化对象
- 14. 设置面料对象的最小和最大调整大小限制
- 15. JavaScript中的外部JSON对象的最大建议大小
- 16. Java减小对象的大小
- 17. R:减小rpart对象的大小
- 18. 减小cPickle对象的大小
- 19. Java中String对象的最大大小是多少?
- 20. 查找python生成器/列表中最大/最小的对象
- 21. Collada对象的大小
- 22. 获取对象的大小
- 23. String对象的大小知
- 24. java.awt.Color对象的大小
- 25. 的java对象大小
- 26. Java对象的大小
- 27. 更改对象的大小
- 28. Oracle Coherence的对象大小
- 29. 对象的大小序列
- 30. 获取最小的对象
我会认为有一个8字节的分配housekeeping.In事物的达尔维克堆不只是占用他们的实际领域的内存。不可避免的是,他们还需要一些“内务”信息,例如记录对象的类,ID和状态标志,例如对象当前是否可到达,当前同步锁定等。 – Slartibartfast
Romain Guy和Chet Haase的更多答案https:/ /speakerdeck.com/romainguy/android-memories –