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 8 young gc花费超过1s,如何减少新生代gc时间

java - 在 Java 虚拟机中处理信号

java - Map 的 keySet() 和 entrySet() 的性能注意事项

java - 将文本文件中的行堆栈连接到一行中

java - 使用JAVA从TFTP服务器获取文件大小,无需下载文件

c - brk() 系统调用有什么作用?

c - 在 NUMA 架构中按线程移动内存页

java - 从 POST 请求中检索图像

c++ - 当函数返回指针时,是否意味着我负责指针内存管理?

java - 这些 Java 字节偏移量是如何计算的?