2016-01-26 87 views
0

我只寫了一個包含自定義類--- Event的程序。它有5個可變成員,帶有get和set方法。代碼在這裏。我的自定義對象有多少個字節?

public class Event { 
    private String CaseID; 
    private String Activity; 
    private int StartTime; 
    private int CompleteTime; 
    private String Notes; 
} 

現在我很困惑,因爲事件類的每個對象在IDE分析器結果中佔用32個字節。但實際上它應該比這更大。每個String對象在我的計算機中至少需要18個字節。我想你可能不相信字符串對象的計算,所以我添加一個包含解釋的鏈接。 Memory usage of String in Java

回答

0

Event具有固定大小,包括參考文獻String s。引用需要固定數量的字節(爲您的虛擬機實施而固定)。

String可能在其他地方並且是任意大的,但Event對象本身具有固定大小,顯然,根據您的IDE配置文件,它是32字節。

+0

對象引用應該表示爲64位,因爲我的電腦是64位系統。另外,它應該是那個字節,對吧?有任何想法嗎? –

+0

這裏是鏈接.http://stackoverflow.com/questions/981073/how-big-is-an-object-reference-in-java-and-precisely-what-information-does-it-co –

+0

@SHUYULYU正如該鏈接指定的那樣,您的JVM可能會使用Compressed Oops,在這種情況下,它們可能是32位或4個字節。這實際上與你所看到的一致:對象頭部有8個字節,對於三個'String'引用有12個字節,對於兩個'int'字段有8個字節,爲了對齊的原因產生了28個字節,然後JVM必須使它8字節的倍數,所以它最多可以達到32個字節。 –

相關問題