0
請幫助解答以下問題。 假設我有隻包含方法的類。將堆中的空間分配給由此類創建的對象嗎?如果是,那麼它包含什麼?是否爲沒有實例變量的對象分配內存?
請幫助解答以下問題。 假設我有隻包含方法的類。將堆中的空間分配給由此類創建的對象嗎?如果是,那麼它包含什麼?是否爲沒有實例變量的對象分配內存?
Fairoz的question linked包含最相關的數據,但我會盡量縮小您的案例的信息。
是的。 JVM將從堆中取出一個連續的空間來存儲這些對象。
內容特定於JVM實現。在HotSpot中,您可以看到source code中的具體內容。
如果您使用的是64位JVM,並且啓用了compressedOops(如java 8上的默認值),Klass指針將只佔用4個字節。由於您沒有字段,因此總大小爲12個字節。但是,JVM強制對齊到一個完整的單詞,因此您的對象將使用4個字節進行填充。總共有16個字節。
一些有用的文檔: - https://www.infoq.com/articles/Introduction-to-HotSpot - https://psy-lob-saw.blogspot.com.es/2013/05/know-thy-java-object-memory-layout.html
請看到這裏的答案 - https://stackoverflow.com/questions/258120/what-is-the-memory-consumption-of-an-object -in-java的 – Fairoz