JVM_01类加载机制
2022-09-01 20:35:10 0 举报
AI智能生成
JVM学习总结---类加载机制
作者其他创作
大纲/内容
sun.misc.Launcher<br>
由c++实现的引导类加载器加载<br>
并创建其他类加载器,相当于其他类加载器的启动类<br>
构造方法<br>
初始化了 扩展类加载器对象<br>
初始化了 应用类加载器对象<br>
基础点
jvm加载属于懒加载,再有再用它得时候才会去加载
主类在运行过程中如果使用到其它类,会逐步加载这些类。
jar包或war包里的类不是一次性全部加载的,是使用到时才加载。
构造方法在类加载完之后才会执行
过程
加载<br>
验证<br>
准备<br>
解析<br>
初始化
类加载器<br>
引导类加载器<br>
JRE的lib目录下<br>
例子:System.out.println(String.class.getClassLoader()); --->null<br>
类路径<br>
Launcher.getBootstrapClassPath().getURLs()<br>
扩展类加载器<br>
JRE的lib目录下的ext扩展目录中<br>
System.out.println(com.sun.crypto.provider.DESKeyFactory.class.getClassLoader()); <br>
父加载器是引导类加载器(是父加载器,不是父类)<br>
类路径
System.getProperty("java.ext.dirs")<br>
应用程序类加载器<br>
System.out.println(TestJDKClassLoader.class.getClassLoader());<br>
父加载器是扩展类加载器(是父加载器,不是父类)<br>
类路径
System.getProperty("java.class.path")<br>
双亲委派机制<br>
概念
实现方法<br>
为什么要设计双亲委派机制
沙箱安全机制<br>
避免类的重复加载<br>
自定义类加载器
打破双亲委派机制
全盘负责委托机制
自定义类加载器
只需要继承 java.lang.ClassLoader 类
loadClass(String, boolean)
findClass
打破双亲委派机制
0 条评论
下一页