JVM学习笔记(一): 初识JVM

JVM

1. 简介

Java: 作为TIOBE长期霸榜的编程语言,Java因为其跨平台,庞大的用户群体和软件生态,是最受推崇的语言,是一种程序员必学招式之一;(跨平台的语言)

JVM: "Write once,Run everywhere"的基石.(跨语言的平台:除了Java,还能运行Kotlin,Clojure,Groovy,Scala,Jython,JRuby,JavaScript 只要这些语言的编译器生成的字节码文件,符合JVM的规范即可)

Java不是最强大的语言,JVM是最强大的虚拟机

1.1. Java发展史

  • 1990年,Sun公司的Green Team开发了一个新的程序语言,命名为Oak,后期命名为Java
  • 1995年,Sun公司正式发布Java和HotJava产品,Java首次公开亮相
  • 1996年,Sun MicroSystems 发布JDK 1.0
  • 1998年,JDK 1.2发布,指定JSP/Servlet EJB规范,Java分成了J2EE,J2SE,J2ME;
  • 2000年.JDK1.3 发布,Java HotSpot Virtual Mechine 正式发布,成为Java默认虚拟机
  • 2002年,JDK1.4 发布,古老的Classic虚拟机退出历史舞台
  • 2003年,Java平台的Scala正式发布,Groovy也加入Java阵营
  • 2004年,JDK 1.5正式改名为JavaSE 5.0
  • 2006年,JDK 6 发布,同年,开源OpenJDK,HotSpot成为OpenJDK默认虚拟机
  • 2007年,Clojure加入Java平台
  • 2008年,Oracle收购BEA得到了JRockit虚拟机
  • 2009年,Twitter把后台从Ruby迁移到Scala,是Java平台的又一次大规模应用
  • 2010年,Oracle收购了Sun,获得Java商标和HotSpot虚拟机
  • 2011年,JDK7发布,在JDK 1.7u4中,正式启用了新的垃圾回收器G1
  • 2017年,JDK9发布,将G1设置为GC,替代CMS
  • 2017年,IBM的J9开源,形成了现在的Open J9社区
  • 2018年,JDBC JMS Servlet赠与Eclipse基金会
  • 2018年,JDK 11发布,发布革命性的ZGC,调整JDK授权许可
  • 2019年 JDK12发布,加入RedHat领导开发的Shenandoah GC

1.2. JVM的架构模型

1.2.1 指令集的架构模型
  1. 基于栈 的指令集架构(Java HotSpot虚拟机就是用的这种架构)

    • 设计和实现简单,适用于资源受限的系统

    • 避开了寄存器的分配难题,使用零指令方式分配

    • 可移植性强,不需要硬件支持

  2. 基于寄存器的指令集架构(了解一下)

    • 典型的应用是x86的二进制指令,比如传统的PC和Android的Davlik虚拟机
    • 指令集结构完全依赖硬件,可移植性差
    • 指令数少

举例 : 2+3 两种指令集指令:

基于栈的指令集

iconst_2 //常量2入栈
istore_1 
iconst_3 // 常量3入栈
istore_2
iload_1
iload_2
iadd  //执行加法
isstore_0  

基于寄存器的计算流程:

mov eax,2 //将寄存器eax的值设为2
add eax,3 //将寄存器eax的值加3

1.3. JVM的生命周期

1.3.1 虚拟机的启动

Java虚拟机的启动是通过引导类加载器(bootstrap class loader)创建一个初始类(init class)来完成的,这个初始类是由Java虚拟机的具体实现指定的.

1.3.2 虚拟机的执行

  • 一个运行中Java虚拟机就是为了执行Java程序;
  • 虚拟机随着程序运行而运行;
  • 执行一个所谓的Java程序的时候,真正执行的是一个Java虚拟机进程.

1.3.3 虚拟机退出

  • 程序正常执行结束
  • 程序异常或错误
  • 操作系统错误导致虚拟机退出
  • 由于某线程调用Runtime类或System类的exit方法,或者Runtime类的halt方法,并且Java安全管理器允许此操作
  • JNI(Java Native Interface)用JNI Invocation API来加载或卸载Java虚拟机
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值