在Java中加载类时如何管理内存?

mos*_*ini 8 java jvm

想象一下,我有一个包含10个方法的类,我需要从类中实例化10个对象.问题是:JVM是否会在对象创建时为10个实例分配10个不同的内存空间(我的意思是在我调用构造函数时,即新的MyClass();?或者它将在内存和每个实例中调用类定义一次这10个方法中的每一个,在运行时,JVM都会分配内存吗?

为了清除一些误解,我的问题是在创建对象时,我知道所有数据成员都分配在堆内存中,但我不确定尚未调用的方法是否在内存中为每个对象分配不同或者不?

The*_*ind 3

是的。类元数据被加载到Permgen 空间( Java8 中的MetaSpace)。因此,一旦加载类,所有方法都可用(静态和非静态)。尚未调用的方法也将作为此元数据的一部分加载。所有方法只会加载一次。