JVM Java Virtual Machine(Java虚拟机)
JVM是 Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。
一、JVM的体系架构
二、类加载器
类加载器:类加载器是jre的一部分,负责动态将类添加到Java虚拟机。(加载Class文件 )
(1)Stu类 通过类加载器加载 .class文件初始化
(2)初始化StuClass模板
(3)通过StudClass类模板实例化 多个对象Stu1、Stu2、Stu3
(4)多个对象Stu1、Stu2、Stu3 依次压入栈(先进后出)
(5)通过堆中的方法区获取对应的属性或常量
1、 虚拟机自带的加载器
(1)启动类加载器(根加载器) bootstrap classloader
加载jre/lib/rt.jar
(2)扩展类加载器 extension classloader
加载jre/lib/ext/*.jar
(3)应用程序类加载器 application classloader
加载classpath上指定的类库
三、双亲委派机制(类加载器的机制)
1.当Application ClassLoader 收到一个类加载请求时,他首先不会自己去尝试加载这个类,而是将这个请求委派给父类加载器Extension ClassLoader去完成。
2.当Extension ClassLoader收到一个类加载请求时,他首先也不会自己去尝试加载这个类,而是将请求委派给父类加载器Bootstrap ClassLoader去完成。
3.如果Bootstrap ClassLoader加载失败,就会让Extension ClassLoader尝试加载。
4.如果Extension ClassLoader也加载失败,就会使用Application ClassLoader加载。
5.如果Application ClassLoader也加载失败,就会使用自定义加