请帮助解决以下问题。 假设我的类只包含方法。堆中的空间是否会为此类创建的对象分配?如果是,那么它包含什么?
答案 0 :(得分:1)
Fairoz的question linked包含最相关的数据,但我会尝试将信息缩小到您的案例。
是。 JVM将从堆中取出一个连续的空间来存储这些对象。
内容特定于JVM实现。在HotSpot中,您可以在source code。
中查看具体内容如果你在64位JVM中,启用了compressOops(在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