Jvm 类加载器(一)
1、JVM的体系机构
2、类加载器ClassLoader
负责加载class文件,class文件在文件开头有特定的文件标识(CA FE BE AN),并且ClassLoader只负责class文件的加载,至于它是否可运行,则由Execution Engine决定。
3、类加载器ClassLoader2
虚拟机自带的加载器
1、启动类加载器(Bootstrap) C++
2、扩展类加载器(Extension) Java
3、应用程序类加载器(AppClassLoader),Java也叫系统类加载器,加载当前应用的classpath的所有类
4、用户自定义加载器,Java.lang.ClassLoader的子类,用户可以定制类的加载方式
4、双亲委派
当一个类收到了类加载请求,它首先不会尝试自己去加载这个类,而是把这个请求委派给父类去完成,每一个层次类加载器都是如此因此所有的加载请求都应该传送到启动类加载其中,只有当父类加载器反馈自己无法完成这个请求的时候(在它的加载路径下没有找到所需加载的Class),子类加载器才会尝试自己去加载。
5、注意:其中Java栈、本地方法栈、程序计数器不会有垃圾回收和内存报错产生