加载类的几种方式
知识点:
如果一个类存在于classpath下,如果未使用并且未手动进行加载,该类不会加载到jvm中,程序启动时,需要加载保证程序运行的基础类。
测试如下:
// 该类存在于以下路径
package com.test.classloader.dto;
public class ServiceTest {
public static String pro1;
static {
pro1 = "aaaa";
System.out.println("ServiceTest静态块");
}
public ServiceTest(){
System.out.println("ServiceTest构造方法");
}
}
// 启动类存在于以下路径,属于ServiceTest的上一层
package com.test.classloader;
import com.test.classloader.dto.ServiceTest;
import java.util.concurrent.TimeUnit;
public class App {
public static void main(String[] args) {
System.out.println("主线程执行...");
try {
TimeUnit.MINUTES.sleep(5);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
启动App后,观察效果(jvisualVm),图中按照类名已排序,只加载了App类