类加载的流程
.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
运行时数据区
运行时数据区细节