类加载

类加载的流程

.class文件 -> ClassLoader -> RuntimeDataArea(运行时数据区) ->执行引擎execute engine ->JNI->完成执行

classLoader的种类

Custom ClassLoader 自定义类加载器,指哪打哪

Application ClassLoader 加载自己写的.class文件

Extension ClassLoader 加载ext目录下的jre

Bootstrap ClassLoader 加载jdk中lib目录下的jre

双亲委派原则

​ 当需要使用到一个类时间,从Custom——>BootStrap依次查找,是否曾经加载过当前类的class文件。如果没有找到,从BootStrap——>Custom尝试加载。如果还没找到:NoClassDefFoundError

​ 为什么使用双亲委派??

​ 1.避免重复加载.class文件。

​ 2.避免破坏jdk得结构。

类加载与双亲委派细节

RunTime Data Area

运行时数据区
类加载
运行时数据区细节

类加载大致流程

类加载

运行时数据区

类加载