2
A
回答
1
的java.util.AbstractMap.SimpleEntry
空白實例應該爲64位JVM 24個字節和32位JVM 12個字節。下面是@PeterLawrey的技術,我發現有用的,基於MemoryUsageExamplesTest:
System.out.printf("The average memory used by simple entry is %.1f bytes%n", new SizeofUtil() {
@Override
protected int create() {
Map.Entry<String, String> e = new AbstractMap.SimpleEntry<String, String>(null, null);
return 1;
}
}.averageBytes());
+0
這似乎是工作。謝謝。 – STiGMa
1
使用ObjectOutputStream將對象寫入ByteArrayOutputstream並檢查結果字節數組的長度。
顯然你的Map.Entry需要實現Serializable。
public int getSizeInBytes(Serializable someObject) {
ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
ObjectOutputStream objectOut = new ObjectOutputStream(byteOut);
objectOut.writeObject(someObject);
objectOut.flush();
return byteOut.toByteArray().length;
}
public int getSizeBits(Serializable someObject) {
return getSizeInBytes(someObject) * 8;
}
+0
感謝您的建議。那是另一個可能的解決方案我會試着比較上面提供的解決方案的答案。 – STiGMa
相關問題
- 1. 計算C++映射的內存
- 2. 緩存和計算映射
- 3. TCL計算映射
- 4. 內存映射
- 5. 程序如何映射到計算機的內存和操作?
- 6. 基於映射的計算
- 7. 低延遲分佈在內存哈希映射(計數映射)
- 8. 映射值:計算百分
- 9. 內存映射UIImage
- 10. 更新java映射條目
- 11. 計算一個月內的條目數
- 12. RTOS的內存映射
- 13. 釋放內存映射內存
- 14. 已計算的集合映射
- 15. 內存映射文件C++
- 16. 困惑了內存映射
- 17. I/O內存映射
- 18. 內存映射數據庫
- 19. 內存映射文件.NET
- 20. GPU - 系統內存映射
- 21. ARM內存重新映射
- 22. Windows內存映射文件
- 23. 內存映射文件
- 24. Python中的內存映射寄存器
- 25. 緩存到內存的映射
- 26. 映射條目的數據幀列
- 27. 不顯示在JSON的映射條目
- 28. 有條件的內部映射JSX
- 29. 如何計算完全關聯映射緩存的標籤?
- 30. 映射存儲過程到實體額外的計算列
你可以做很多事情與儀器儀表,但你的主要目標是什麼?分析器可以告訴你地圖需要多少內存。你的地圖條目是什麼? – Kayaman
鍵和值都是字符串。主要目的是在應用程序運行時計算Map對象的內存消耗。 – STiGMa
我對各種地圖類型的每個項目的相對消費感興趣,所以我可以使速度與內存之間的折衷。 每個地圖類型具有不同的每個值的開銷。 ie:哈希映射對每個值的使用與TreeMap不同,或者數組[鍵,值,鍵,值,...]的最小內存二進制搜索。 – peterk