欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

初识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