类是在第一次被引用的时候载入的。 如果一个类在JVM运行时一次都没有引用过,那到JVM结束运行时,还是没有载入。类是被引用它的那个类的ClassLoader作为一个对象载入的(实际载入的是Class类的一个实例)。例如: class A { static { B.staticMethod(); } } 那么在A被别的类引用的时候,它引用的B类也会载入内存——因为A类初始化的时候,引用到了B类。而如果是下面这个样子: class A { public void run() { B.staticMethod(); } } 那么直到A的方法run在某个地方调用的时候,B类才会载入内存。
如果一个类在JVM运行时一次都没有引用过,那到JVM结束运行时,还是没有载入。类是被引用它的那个类的ClassLoader作为一个对象载入的(实际载入的是Class类的一个实例)。例如:
class A {
static {
B.staticMethod();
}
}
那么在A被别的类引用的时候,它引用的B类也会载入内存——因为A类初始化的时候,引用到了B类。而如果是下面这个样子:
class A {
public void run() {
B.staticMethod();
}
}
那么直到A的方法run在某个地方调用的时候,B类才会载入内存。