java - main 方法是否也在堆中分配?

标签 java memory-management jvm program-entry-point

我读到“Java 中的每个对象都在堆中分配。”

我也知道“每个程序,对象都是由 Object 类继承的”,但我不确定类名。

那么如果我们的包含main方法的程序在Java虚拟机中也被object类继承了,是不是说明它也是一个对象呢? main 方法是否也在堆中分配?如果是,是否意味着 Java 中的所有内容都分配在堆中?

最佳答案

关于 run-time data areas 的 JVM 规范可能会有帮助。当您启动程序时,具有 main 方法的类由 JVM 的引导类加载器加载。 Java 类加载器将加载的每个类的方法添加到 JVM 的方法区,这是一个共享内存池,Java 类的所有可执行代码都存放在这里。然后它分配一个frame 来保存在main 方法中定义的变量;此帧是在堆栈上还是在堆上分配取决于实现。

关于java - main 方法是否也在堆中分配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21521149/

相关文章:

java - JVM Internals - 为什么同一段代码在不同的时间运行?

java - 如何从 JVM 获取堆和 permgen 的最大大小?

Java函数/方法内存管理

java - Android ImageButton 交换资源离开 'residue'

java - 从 ByteStream 可视化 Android AudioTrack

java - 为什么 Java 应用程序在 Windows XP 32 和 Windows 7 64 中的内存使用有如此大的差异

c++ - 在 CUDA 中实现可变长度(本地)数组的等价物

java - Java SE 和 Android 平台的不同正则表达式结果

java - 应用程序每 2 秒卡住一次 android

python如何在不重复的情况下将新对象保存到列表中