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 –