-1
我想了解一個java接口將佔用多少空間,二進制中的磁盤和每個實例化對象的基礎上。強制性的「每個JVM的實現可能是不同的」免責聲明,我更感興趣的不是100%的確切答案,而是理解如何處理的基本要素。Java界面需要多少空間(二進制/內存)?
如果我們假設一個簡單的接口(沒有靜態的最終變量,沒有默認的實現),那麼這個二進制會佔用多少空間?我假設需要存儲可讀的類名,以進行調試/反射,還可能存在一些唯一的類標識符?當實現此接口的對象被實例化時,接口將添加到對象的內存中表示中多少額外的開銷字節(如果有)?
這不是一個非常有意義的問題,隨着類文件格式的改變和JVM實現的改變,隨着時間的推移,任何答案都會有所不同。它可能會在不同的平臺上有不同的答案。也許如果你解釋了「答案」會給你什麼以及知道爲什麼這很重要。當然,唯一的答案是「......多少額外字節的開銷......」是「它取決於」。 –
這不是一個cop-out答案,它是*唯一有效答案*。 SO不僅僅關心今天回答一個人的問題,它還是一個長期的信息庫。關於當前最新Java的準確性可能與明天無關,並且今天可能與使用不同版本Java的其他人無關。 – Adrian
閱讀JVM字節碼規範。 https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html –