因为在C ++中,所有方法(非静态和静态)都是全局的(存储在静态内存区域中),我想知道它是否也适用于Java。
我的猜测是Java存储对象方法的方式应该与C ++中的方式相同,因为您不能将非静态方法存储在动态或堆栈中,这将耗费内存。
答案 0 :(得分:2)
所有代码全球存储'。它与堆或堆栈无关。它们用于数据。
答案 1 :(得分:1)
加载类时,会创建类的JVM内部表示。它包含或指向.class文件中的所有数据,包括各个方法的字节码序列。
作为类加载过程的一部分,创建了一个实例方法指针表,该类中的每个方法都有一个“槽”,或者(递归地)它是超类。指向单个字节码序列的指针(如果代码是JITCed,则是机器代码)放在该表中。
该表的所有实例(以及它指向的数据)只有一个实例用于关联类的所有实例。