类加载机制与JVM调优命令
一、类加载过程 类加载: 类加载器将.class字节码文件加载进Java虚拟机的内存中 。 加载 :在硬盘上查找并通过IO读入字节码文件 连接 :执行校验、准备、解析(可选)步骤 校验 :校验字节码文件的正确性 准备 :给类的静态变量分配内存,并赋予默认值 解析 :类加载器载入类所引用的其他所有类 初始化 :对类的静态变量初始化为指定的值,执行静态代码块 二、类加载器种类 引导类加载器 :负责加载JRE的核心类库,如JRE目标下的rt.jar、charsets.jar等 扩展类加载器 :负责加载JRE扩展目录ext中的jar类包 系统类加载器 :负责加载ClassPath路径下的类包 自定义类加载器 :负责加载用户自定义路径下的类包 例子:定义一个TestJDKClassLoader类。 运行结果: 分析:第一个为null(其实就是引导类加载器,引导类加载器是用C和C++写的,不在JDK中,根本不知道它的名字,类似于native方法),第二个为扩展类加载器,第三、四个为系统类加载器。 三、类加载机制 全盘负责委托机制:当一个ClassLoader加载一个类时,除非显示的使用另一个ClassLoader,否则该类所依赖和引用的类也由这个ClassLoader载入 双亲委派机制 :指先委托父类加载器寻找目标类,在找不到的情况下再从自己的路径中查找并载入目标类 双亲委派模式的优势: