初识JVM
JVM概念
JVM是Java Virtual Machine的简称。意为Java虚拟机。
Java和JVM的历史
1996年 SUN JDK 1.0 Classic VM
-
- 纯解释运行,使用外挂进行JIT
1997年 JDK1.1 发布
-
- AWT、内部类、JDBC、RMI、反射
1998年 JDK1.2 Solaris Exact VM
-
- JIT 解释器混合
- Accurate Memory Management 精确内存管理,数据类型敏感
- 提升的GC性能
2000年 JDK 1.3 Hotspot 作为默认虚拟机发布
2002年 JDK 1.4 Classic VM退出历史舞台
2004年发布 JDK1.5 即 JDK5 、J2SE 5 、Java 5
-
- 泛型
- 注解
- 装箱
- 枚举
- 可变长的参数
- Foreach循环
JDK1.6 JDK6
-
- 脚本语言支持
- JDBC 4.0
- Java编译器 API
2011年 JDK7发布
-
- 延误项目推出到JDK8
- G1
- 动态语言增强
- 64位系统中的压缩指针
- NIO 2.0
2014年 JDK8发布
-
- Lambda表达式
- 语法增强 Java类型注解
2016年JDK9
-
- 模块化
使用最为广泛的JVM为HotSpot
HotSpot 为Longview Technologies开发 被SUN收购
2006年 Java开源 并建立OpenJDK
-
- HotSpot 成为Sun JDK和OpenJDK中所带的虚拟机
2008 年 Oracle收购BEA
-
- 得到JRockit VM
2010年Oracle 收购 Sun
-
- 得到Hotspot
Oracle宣布在JDK8时整合JRockit和Hotspot,优势互补
-
- 在Hotspot基础上,移植JRockit优秀特性
JVM规范
Java语言和JVM相对独立
JVM主要定义二进制class文件和JVM指令集等
- Class文件类型
- 运行时数据
- 帧栈
- 虚拟机的启动
- 虚拟机的指令集
VM指令集
类型转化
l2i
出栈入栈操作
aload astore
运算
iadd isub
流程控制
ifeq ifne
函数调用
invokevirtual invokeinterface invokespecial invokestatic