当类加载器加载类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");
}
}
最佳答案
至少Which all classes will be loaded by classloader
A
和 Object
。根据实现的不同,JVM 可能会在类初始化时或创建第一个实例时加载 B
和 C
。在调用 m2()
之前,C
可能不会初始化。
in which memory location in JVM these objects would be put
无论您使用哪个类加载器,小对象都会放置在 Eden 空间中。
If flag is false will class D be loaded
可能不是,但这取决于 JVM。
关于Java 类加载器和内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37951533/