Jvm Java是否为没有实例变量的对象分配内存?

Jvm Java是否为没有实例变量的对象分配内存?,jvm,Jvm,请帮助回答以下问题。 假设我有一个只包含方法的类。堆中的空间是否会分配给此类创建的对象?如果是,那么它包含什么?Fairoz的文章包含了最相关的数据,但我将尝试将信息缩小到您的案例中 对。JVM将从堆中取出一个连续的空间来存储这些对象 内容特定于JVM实现。在HotSpot中,您可以在中看到详细信息 将有一个名为“Mark”的机器字,它已定义,用于保存哈希代码、锁定状态和垃圾收集。这需要8个字节 接下来是指向的指针,其中包含有关类的信息,例如方法 如果您在64位JVM中,启用了compres

请帮助回答以下问题。 假设我有一个只包含方法的类。堆中的空间是否会分配给此类创建的对象?如果是,那么它包含什么?

Fairoz的文章包含了最相关的数据,但我将尝试将信息缩小到您的案例中

对。JVM将从堆中取出一个连续的空间来存储这些对象

内容特定于JVM实现。在HotSpot中,您可以在中看到详细信息

  • 将有一个名为“Mark”的机器字,它已定义,用于保存哈希代码、锁定状态和垃圾收集。这需要8个字节
  • 接下来是指向的指针,其中包含有关类的信息,例如方法
如果您在64位JVM中,启用了compressedOops(在Java8上是默认的),Klass指针将只占用4个字节。由于没有字段,因此总大小为12字节。但是,JVM强制对齐到一个完整的字,因此您的对象将使用4个字节进行填充。总共16个字节

一些有用的文档: - -

请在此处查看答案-