Java_Where 是 non_static 方法实际存储?

Java_Where is non_static methods are actually stored?

由于在 C++ 中所有方法(非静态和静态)都是全局的(存储在静态内存区域),我想知道 Java 是否也是如此。

我的猜测是 Java 存储对象方法的方式应该与 C++ 中的相同,因为您不能将非静态方法存储在动态或堆栈中,这会消耗内存。

所有代码已存储'globally'。它与堆或堆栈无关。它们用于 data.

当您加载 class 时,将创建 class 的 JVM 内部表示。这包含或指向 .class 文件中的所有数据,包括各个方法的字节码序列。

作为 class 加载过程的一部分,创建了 table 个实例方法指针,"slot" 用于 class 或 class 中的每个方法(递归地)它是超级class。指向各个字节码序列的指针(如果代码是 JITCed,机器代码)被放置在 table.

对于关联的 class 的所有实例,此 table(及其指向的数据)只有一个实例。