當我們有一個參考變量例如爲了簡化它Integer i
我們可以假設i
的大小對於實際的int + 4字節填充即24字節大約爲16字節開銷+ 4字節。
所以我的問題是,如果i
爲空我們只有4個字節的引用沒有指向任何地方或有任何其他額外的「隱藏」信息添加到此?空對象有多少個字節?
5
A
回答
2
如果我記得沒錯,JVM規範提到null
不需要具有特定的值或表示,所以它可以是任何東西。它是什麼通常是,我不知道,但一個公平的猜測可能是32位或64位零,具體取決於JVM版本。
編輯:這裏的相關章節:http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html#jvms-2.4
Java虛擬機規範並沒有規定具體的值編碼爲空。
乾杯,
1
是的它仍然使用內存。我相信使用4個字節的32位和8個64位。
+1
如果您設置了對'null'的引用,它不會指向堆上的對象(這會消耗堆內存)。然而參考本身需要被存儲。作爲本地堆棧幀中的對象或插槽中的字段(如果它是本地變量)。這當然佔用與「普通對象指針」大小(即32或64位)一樣多的字節。在對象中可能會有一些填充字段和堆棧,有一些重用(或在遞歸的情況下多次出現同一個引用)。但那是參考實際值的所有獨立(null或不)。 – eckes
相關問題
- 1. 手臂有多少個字節對齊?
- 2. 我的自定義對象有多少個字節?
- 3. 空隊列需要多少個字節?
- 4. 有多少個空字節,連接字符串C
- 5. 每個inode有多少個字節?
- 6. JVM中有多少個對象太多?
- 7. Hollerith卡有多少個字節?
- 8. 有多少個字節是\ n \ r?
- 9. 這個類有多少個對象?
- 10. BufferedReader,讀多少個字節?
- 11. 如何知道我的對象在C#中有多少個字節?
- 12. 堆棧上有多少個對象?
- 13. Java - 你可以有多少個對象?
- 14. 千兆字節(GB)有多少個字節?
- 15. 有多少個字節對於twitter來說足夠獨特?
- 16. 多少個對象創建
- 17. 多少個String對象..?
- 18. Hibernate:ManytoOne - 多少個對象?
- 19. Java中有多少個字符串對象?
- 20. 確定Javascript對象有多少個字段
- 21. 如何檢測顯示對象中有多少個對象? (AS3)
- 22. 有多少記錄/對象太多?
- 23. SimpleXMLElement對象缺少節點
- 24. 半字節中有多少位?
- 25. 少量實體vs大量實體 - 這有多少個對象?
- 26. 聲明空字節 - 可爲空的對象必須有一個值?
- 27. 如何測試對象引用在Java中使用多少個字節?
- 28. 使用了多少個字節?
- 29. 函數需要多少個字節?
- 30. 使用dataReceived接收多少個字節?
你的意思是對象,或參考? – yshavit
正確。我們只有引用的4個字節指向空。 –