JVM知识精粹
1.jvm执行字节码文件
-
流程:jvm通过类加载器加载字节码文件----字节码校验器---翻译字节码(解释执行,反复执行的热点代码使用JIT编译器再次编译)
3.hotspot基于栈的指令集架构,另一种是基于寄存器的指令集架构
基于栈的java指令的特点:跨平台性(非资源受限),指令集小但是指令多,执行性能比寄存器差
4.jvm的声明周期:
4.1启动,通过引导类加载器(bootst rap class loader)创建一个初始类(initial class)来完成,这个类由虚拟机的具体实现指定
4.2执行, 程序开始执行他才运行,程序结束时他就停止。执行一个所谓的java程序的时候,真真正正在执行的是一个叫做java虚拟机的进程
4.3退出,1.程序正常执行结束,2.程序在执行过程中遇到了异常或者错误异常终止3.由于操作系统出现错误而导致java虚拟机进程终止4.某线程调用runtime类或者system类的exit方法,或者runtime类的halt方法,并且java安全管理器也允许这次exit或halt操作
5.jvm虚拟机:
5.1 sun classic vm,sun公司发布的世界上第一款商用java虚拟机,只提供了解释器,现在hotspot内置的虚拟机
5.2 exact vm,可以知道内存中某个位置的数据具体是什么类型,热点探测,编译器解释器混合工作
5.3 hotspot vm,在服务器端/客户端/嵌入式都有应用,热点代码探测,触发及时编译或者栈上替换,编译器和解释器混合系统工作
5.4 jrockit,专注于服务器端应用,内部不包括解释器实现,全部代码都靠即时编译器解释执行,号称世界上最快的jvm
5.5 j9,市场定位与hotspot接近,在服务器/桌面端/嵌入式被应用
5.6 kvm,cdc,cldc,Azul,liquid,harmony,Graal
6.执行引擎:解释器+即时编译器(JIT)+垃圾回收器
7.class file存放在本地磁盘,可以理解为设计师画在纸上的模板,加载到jvm中的方法区,成为dna元素据模板,此过程由类加载器完成
8.jvm架构:
第02章_JVM架构-中.jpg