当类加载器加载类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");
}
}
答案 0 :(得分:0)
至少所有类将由classloader加载
A
和Object
。根据实现,JVM可能会在类初始化时或在您创建第一个实例时加载B
和C
。在C
被调用之前,m2()
可能不会被初始化。
将JVM中的内存位置放在这些对象中
无论您使用哪种ClassLoader,小对象都会放在Eden空间中。
如果flag为false,则加载D类
可能不是,但这取决于JVM。