確定 Java 中物件的記憶體消耗是一個多方面的主題,因為它取決於多種因素。
在現代 64 位元 JDK 中,物件有一個12 位元組標頭填充為 8 位元組的倍數,導致最小物件大小為 16 位元組。 32 位元 JVM 上的物件有一個 8 位元組標頭,填滿為 4 個位元組的倍數。
對物件的引用通常在 32 位元平台上佔用 4 個位元組,或在 64 位元平台上佔用多達 -Xmx32G,並且32Gb 以上 8 個位元組 (-Xmx32G)。
要估計物件消耗的儲存空間,可以使用 Instrumentation.getObjectSize()。 JOL(Java 物件佈局)工具可用於視覺化實際的物件佈局、佔用空間和參考。
物件的內容,例如成員變數和引用,導致記憶體消耗。為了優化記憶體使用,JVM 採用對齊方式,即以 8 個位元組的倍數分配記憶體。這意味著即使一個物件只包含幾個小變量,JVM 也可能會分配更多記憶體來確保對齊。
裝箱包裝類,例如 Integer或 Long,由於其額外的大小和物件頭,與原始類型相比有開銷。由於嵌套數組和字串內部 char 數組的開銷以及額外的開銷,多維數組和字串也可能是記憶體密集型的。
因此,由於 JVM 在記憶體管理方面的靈活性,回答給出的特定問題變得很困難,這些因素提供了對 Java 中物件的記憶體消耗的深入了解。若要優化記憶體使用,請仔細考慮物件設計、資料結構和對齊方式。
以上是Java 物件實際消耗多少記憶體?的詳細內容。更多資訊請關注PHP中文網其他相關文章!