簡體   English   中英

如何通過內存堆中的java對象獲取占用的空間?

[英]How can I get the occupied space by a java object in the memory heap?

對象從內存堆中占用多少空間? 如何才能做到這一點?

這比僅使用空閑內存計算(不考慮垃圾收集和其他線程的新分配)要復雜得多。 看一眼:

http://www.javaspecialists.eu/archive/Issue142.html

然而,這是先進的東西。

- 編輯 -

上面的解決方案找到了一個對象的深度 (使用堆棧遍歷參考網絡,訪問引用的集合,當然還有檢測)。

但是,獲得對象的淺層大小更簡單,並且可以通過java 1.5工具實現而無需額外的工作(請參閱Instrumentation.getObjectSize() )。

對象占用的內存量從一個JVM實現到下一個JVM實現,有時從一個平台到下一個平台。

您可以通過計算原始類型的數量和大小以及聲明為對象類的實例變量的對象引用來估計金額。

例如:

public class Monkey {
  int arms;
  Animal parent;
}

..有1個對象引用和1個int原語,在32位體系結構上每個實例占用大約 8個字節。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM