jvm品牌
- SUN Classic
- Exact VM
- HotSpot VM :HotSpot指热点代码探测技术
- BEA JRockit:(BEA 已被Oracle收购) 专注于服务端应用,世界最快的jvm之一
- IBM J9
- Taobao JVM: 目前已经在淘宝、天猫上线,替换了Oracle官方JVM;
- Graal VM: Oracle 2018年4月公开,口号 Run Programs Faster
- Anywhere.最可能替代HotSpot的产品
java代码执行流程
java程序--(编译)-->字节码文件--(解释执行)-->操作系统(Win,Linux,Mac JVM)
java -p xxx.class 查看字节码 jps 查看当前进程
jvm生命周期
- 启动
通过引导类加载器(bootstrap class loader)创建一个初始类(initial class)来完成的,这个类是由虚拟机的具体实现指定的.
- 执行
一个运行中的java虚拟机有着一个清晰的任务:执行Java程序; 程序开始执行的时候他才运行,程序结束时他就停止; 执行一个所谓的Java程序的时候,真真正正在执行的是一个叫做Java虚拟机的进程。
- 退出
程序正常执行结束 程序异常或错误而异常终止 操作系统错误导致终止 某线程调用Runtime类或System类的exit方法,或Runtime类的halt方法,并且java安全管理器也允许这次exit或halt操作 除此之外,JNI规范描述了用JNI Invocation API来加载或卸载Java虚拟机时,Java虚拟机的退出情况
jvm架构图
JVM完整目录
1. jvm概述
2.类加载机制
3.运行时数据区[PC寄存器、虚拟机栈、本地方法栈]
4.运行时数据区[堆]
5.运行时数据区[方法区]
6.暂缺
7. 运行时数据区[对象的实例化内存布局与访问定位、直接内存]
8.执行引擎(Execution Engine)
9.字符串常量池
10.垃圾回收[概述、相关算法]
11.垃圾回收[垃圾回收相关概念]
12.垃圾回收[垃圾回收器]
13.常见的OOM
14. JDK命令行工具