[英]Java classloader and memory management
当类加载器加载类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");
}
}
哪个类将由classloader加载
A
和Object
作为最低限度。 根据实现,JVM可能会在类初始化时或在创建第一个实例时加载B
和C
在调用m2()
之前,可能不会初始化C
在JVM中的内存位置将放置这些对象
无论您使用哪种ClassLoader,都会在Eden空间中放置小对象。
如果flag为false,则加载D类
可能不是,但它取决于JVM。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.