簡體   English   中英

新Object()的內存reserver中有多少空間;

[英]How much space in memory reserver for new Object();

我只是想知道如果我創建一個像“New Object()”這樣的新對象,將在內存中保留多少空間。 由於在堆上創建的任何對象占用的空間等於其實例變量的大小總和。

由於在堆上創建的任何對象占用的空間等於其實例變量的大小總和。

不,它需要更多的內存。 指向類型信息的指針以及與對象關聯的監視器(用於同步目的)需要額外的內存。

確切的大小因JVM而異(特別是處理器架構)。 對於對齊目的,JVM也可以實現最小大小,但是獲得“前4字節字段可用”策略。 例如,假設在64位JVM上,類型指針占用8個字節,監視器信息占用4個字節,您可能仍希望分配16個字節而不是12個用於對齊目的 - 在這種情況下,具有單個int字段的對象可以獲取與普通Object實例相同的內存。

問題將是一個非常廣泛的問題。

它取決於類變量,或者您可以在java中調用狀態內存使用。

它還對標頭和引用有一些額外的內存要求。

Java對象使用的堆內存包括

  • 原始字段的內存,根據它們的大小(參見下面的原始類型的大小);

  • 參考字段的內存(每個4字節);

  • 一個對象標題,由幾個字節的“管家”信息組成;

java中的對象還需要一些“內務”信息,例如記錄對象的類,ID和狀態標志,例如對象當前是否可訪問,當前是同步鎖定等。

Java對象標頭大小因32位和64位jvm而異。

雖然這些是主要的內存消費者,但jvm還需要額外的字段,有時候需要對齊代碼等

原始類型的大小

布爾和字節 - 1

char&short - 2

int&float - 4

長和雙 - 8

暫無
暫無

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

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