Java类加载器和内存管理
当类加载器加载classJava类加载器和内存管理,java,garbage-collection,jvm,Java,Garbage Collection,Jvm,当类加载器加载classA时,类加载器将加载哪些类,这些对象将放在JVM中的哪个内存位置?如果flag为false是否将加载类D public class A { B b = new B(); C c = null; static int i; int j; public static void main(String args[]) throws Exception { boolean flag = true; if (flag) { m1
A
时,类加载器将加载哪些类,这些对象将放在JVM中的哪个内存位置?如果flag
为false
是否将加载类D
public class A {
B b = new B();
C c = null;
static int i;
int j;
public static void main(String args[]) throws Exception {
boolean flag = true;
if (flag) {
m1();
}
A a = new A();
a.m2();
}
private static void m1() {
D d = new D();
d.print();
}
private void m2() {
c = new C();
System.out.println("inside m2");
}
private static void m3() {
System.out.println("inside m3");
}
}
所有类都将由类加载器加载
A
和对象
作为最低要求。根据实现的不同,JVM可能会在类初始化时或创建第一个实例时加载B
和C
<在调用m2()
之前,可能不会初始化code>C
这些对象将放在JVM中的哪个内存位置
无论使用哪个类装入器,小对象都会放置在Eden空间中
如果标志为false,是否将加载D类
可能不会,但这取决于JVM
所有类都将由类加载器加载
A
和对象
作为最低要求。根据实现的不同,JVM可能会在类初始化时或创建第一个实例时加载B
和C
<在调用m2()
之前,可能不会初始化code>C
这些对象将放在JVM中的哪个内存位置
无论使用哪个类装入器,小对象都会放置在Eden空间中
如果标志为false,是否将加载D类
可能不是,但这取决于JVM。B的声明是静态的B=new B();只需使用
-verbose:class
运行并查看。除此之外,在问题中发布完整的代码也是一个好习惯;只需使用-verbose:class
运行并查看。除此之外,在问题中发布完整的代码也是一个好习惯。