初识JVM
程序员文章站
2022-08-11 13:55:56
JVM概念 JVM是Java Virtual Machine的简称。意为Java虚拟机。 Java和JVM的历史 1996年 SUN JDK 1.0 Classic VM 纯解释运行,使用外挂进行JIT 纯解释运行,使用外挂进行JIT 1997年 JDK1.1 发布 AWT、内部类、JDBC、RMI ......
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