Java 方法对eact对象有不同的副本吗?

Java 方法对eact对象有不同的副本吗?,java,Java,您好我有一个java类示例。 它有两个实例变量和一个方法来添加实例变量并打印总和。 我创建了示例类的两个对象。我很清楚,这两个对象都有自己的数据成员。 我必须知道,这两个对象是否都有一个共同的方法副本,或者它们在jvm中有不同的副本。jvm只加载一次类。因此,内存中有一个方法的通用副本。一般来说,JVM将指令与内存布局中的数据分开,方法的“代码”由对象引用。这意味着调用同一方法的两个实例通常都会引用内存布局中的同一个“代码”块。这是一个好问题,但为什么您必须知道这一点?如果两个或多个对象同时使用

您好
我有一个java类示例。 它有两个实例变量和一个方法来添加实例变量并打印总和。
我创建了示例类的两个对象。我很清楚,这两个对象都有自己的数据成员。
我必须知道,这两个对象是否都有一个共同的方法副本,或者它们在jvm中有不同的副本。

jvm只加载一次类。因此,内存中有一个方法的通用副本。

一般来说,JVM将指令与内存布局中的数据分开,方法的“代码”由对象引用。这意味着调用同一方法的两个实例通常都会引用内存布局中的同一个“代码”块。

这是一个好问题,但为什么您必须知道这一点?如果两个或多个对象同时使用同一代码块;这是否意味着一个对象将首先完成其工作,然后第二个对象将使用它,或者两个对象可以同时使用同一个代码块?没有理由只由一个线程独占使用代码,因为Java VM不支持自修改代码,因此代码是不可变的。(热点优化器可以对其进行修改,但您不必担心这一点。)