在Java中,类函数放在内存中的什么位置?

在Java中,类函数放在内存中的什么位置?,java,memory,Java,Memory,在java中,类函数放在内存中的什么位置?取决于实现。一般来说,在Java中不应该担心这些事情。“虚拟机”的整个概念就是抽象出这样的东西。现在我假设函数存储在靠近字节码的地方,但是如果您的VM支持JIT,那么它们可能在任何地方 我想我们可以说“在堆上”…哈哈 老实说,我想不出你需要知道这一点的任何原因,想到你可能会试图使用它来做什么,我感到害怕。JVM规范暗示它是堆的一部分: 3.5.4方法区域 Java虚拟机有一个方法 所有Java语言共享的区域 虚拟机线程。方法 面积与存储面积类似 用于常规

在java中,类函数放在内存中的什么位置?

取决于实现。一般来说,在Java中不应该担心这些事情。“虚拟机”的整个概念就是抽象出这样的东西。现在我假设函数存储在靠近字节码的地方,但是如果您的VM支持JIT,那么它们可能在任何地方

我想我们可以说“在堆上”…哈哈


老实说,我想不出你需要知道这一点的任何原因,想到你可能会试图使用它来做什么,我感到害怕。

JVM规范暗示它是堆的一部分:

3.5.4方法区域

Java虚拟机有一个方法 所有Java语言共享的区域 虚拟机线程。方法 面积与存储面积类似 用于常规程序的编译代码 语言或类似于“文本” UNIX进程中的段。它存储 每类结构,例如 运行时常量池、字段和 方法数据和方法的代码 和构造器,包括 课堂上使用的特殊方法(§3.9) 以及实例初始化和 接口类型初始化。这个 方法区域是在虚拟机上创建的 机器启动。虽然方法 区域在逻辑上是堆的一部分, 简单的实现可能会选择不 垃圾收集或压缩 信息技术此版本的Java虚拟机 机器规格不强制要求 方法区域的位置或 用于管理已编译代码的策略。 方法区域可以是固定大小的 或可根据客户要求进行扩展 如果 方法面积变大 不必要。方法的内存 区域不需要是连续的


参考资料:

我认为@husain希望了解类/静态函数和实例函数之间的区别。在这种情况下,它们存储在同一位置。如果函数所包含的数据是静态类与实例类,则其分配可能会有所不同,但“函数”本身,即函数中包含的代码,不会被复制。这对您/我们/我/其他人制作的任何程序都有影响吗?