在java中,内存中的类函数放在哪里?
答案 0 :(得分:3)
取决于实施。通常你不应该担心Java中的这些东西。 “虚拟机”的整个概念就是抽象出这样的东西。现在我假设函数存储在接近字节码的某个地方,但是如果你的VM支持JIT,那么它们可以在任何地方......
我想我们可以说“在堆上”......大声笑
说实话,我想不出你需要知道这一点的一个原因,并想到你可能试图用它来吓唬我。
答案 1 :(得分:3)
JVM规范暗示它是堆的一部分:
3.5.4方法区
Java虚拟机有一个方法 所有Java共享的区域 虚拟机线程。方法 区域类似于存储区域 用于传统的编译代码 语言或类似于“文本” UNIX进程中的段。它存储 每类结构如 运行时常量池,字段和 方法数据和方法的代码 和构造函数,包括 课堂上使用的特殊方法(§3.9) 和实例初始化和 接口类型初始化。该 方法区域是在虚拟上创建的 机器启动。虽然方法 区域在逻辑上是堆的一部分, 简单的实现可能不会选择 无论是垃圾收集还是紧凑 它。这个版本的Java虚拟 机器规格没有强制要求 方法区域的位置或 用于管理已编译代码的策略。 方法区域可以是固定大小的 或者可以按照要求进行扩展 计算,如果a,可以签约 更大的方法区域变成 不必要。该方法的内存 区域不需要连续。