JVM学习————简介(一)

JVM简介

所谓虚拟机就是一台虚拟的计算机,用来执行一系列计算机指令。分为系统虚拟机程序虚拟机

  • 系统虚拟机:Visual Box,VMware,完全对物理计算机的仿真,提供一个可供运行的完整的操作系统的软件平台
  • 程序虚拟机:Java虚拟机,专门执行单个计算机程序

Java虚拟机

  • 是一台执行Java字节码的虚拟计算机,拥有独立的运行机制,其运行的Java字节码不一定都是由Java语言所写,只要符合JVM的编写规范,任何字节码文件都可以运行
  • Java核心技术就是Java虚拟机,因为所有的Java程序都运行在Java虚拟机内部
  • 作用
    • Java虚拟机就是执行二进制字节码的运行环境
  • 特点
    • 一次编译,到处运行
    • 自动内存管理
    • 自动垃圾回收
  • 位置

在这里插入图片描述

JVM的整体结构

  • HotSpot VM是目前市面上高性能的虚拟机之一

  • 采用解释器和即时编译器并存的架构
    - [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u3MamI9l-1617499722895)(JVM.assets/image-20210328102139863.png)]

区分栈的指令集基于栈和基于寄存器的

Java编译器输入的指令基本上是一种基于栈的指令集架构,另一种是基于寄存器的指令集架构

  • 基于栈式架构的特点
    • 设计和实现简单,适用于资源受限的系统
    • 避开了寄存器分配的难题,使用零地址指令的分配方式
    • 指令流中的指令大部分是零地址指令,其执行过程依赖于操作栈,指令集更小,编译器容易实现
    • 不需要硬件的支持,可移植性更好,更好实现跨平台
  • 基于寄存器架构的特点
    • 典型的应用是x86的二进制指令集,比如传统的PC以及Android的Davlik虚拟机
    • 指令集架构完全依赖于硬件,可移植性差
    • 性能优秀和执行高效
    • 花费更少的时间去完成一项操作
    • 基于寄存器架构的指令集往往都是以一地址指令,二地址指令和三地址指令为主。

在这里插入图片描述

总结:由于跨平台性的设计,Java的指令都是根据栈来设计的。不同的CPU架构不同,所以不能设计为基于寄存器的,优点是跨平台,指令集小,编译容易实现,缺点是性能下降,实现同样的功能需要更多的指令

JVM生命周期

虚拟机的启动

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

虚拟机的执行
  • 程序开始执行,程序结束时停止
  • 执行所谓的Java程序的时候,真真正正在执行的是一个叫做Java虚拟机的进程
虚拟机的生命周期
虚拟机的退出
  • 程序正常结束
  • 在执行过程中遇到异常或者错误而终止
  • 由于操作系统错误而导致Java虚拟机进程终止
  • 某线程调用Runtime类或者System类的exit(),或Runtime类的halt(),并且Java安全管理器也允许这次exit或halt操作
  • 用JNI Invocation API来加载或者卸载Java虚拟机

JVM发展历程

Sun Classic VM
  • Sun公司发布的Sun Classic VM,世界上第一款商用Java虚拟机
  • 只提供解释器如果使用JIT要外挂,但是二者不能配合工作
  • hotSpot内置了此虚拟机
Exact VM
  • Exact Memory Management:准确式内存管理
    • 虚拟机可以知道内存中某个位置的数据具体是什么类型
  • 具备现代高性能虚拟机的雏形
    • 热点探测
    • 编译器和计数器混合工作
  • 只在Solaris平台短暂使用
SUN公司的 HotSpot
  • Oracle JDK和Open JDK默认的虚拟机
  • 热点代码探测技术
    • 通过计数器找到最具编译价值的代码,触发JIT或栈上替换
    • 通过编译器和解释器协同工作,在最优化的程序响应时间与最佳执行性能中取得平衡
BEA的 JRockit
  • 专注于服务器端
    • 它可以不太关注程序的启动速度,因此JRockit内部不包含解析器,全部代码都是靠JIT后执行的
  • JRockit JVM是世界上最快的JVM
  • 全面的Java运行时解决方案组合
    • JRockit面向延迟敏感型应用
    • MissionControl服务套件,是以极低的开销来监控、管理和分析生产环境中的应用程序的工具
  • 在HotSpot基础上,移植JRockit的优秀特性
IBM的 J9
  • 市场定位于HotSpot相似,服务器端、桌面应用、嵌入式等多用途VM
  • 广泛用于IBM的各种Java产品
其他类型虚拟机
  • KVM和CDC/CLDC Hotspot
    • 老年机
  • Azul VM
    • 与特定硬件平台绑定、软硬配合的专有虚拟机
  • Liquid VM
    • 与特定硬件平台绑定、软硬配合的专有虚拟机
  • Apache Harmony
  • Microsoft JVM
  • TaoBao JVM
  • Dalvik VM
    • 只能称作虚拟机,不能称为Java虚拟机
  • Graal VM
    • 在HotSpot基础上增强而成的跨语言全栈虚拟机,可作为”任何语言“的运行平台使用
    • 如何HotSpot有一天被取代,Graal VM希望最大

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5sVyXrwP-1617499722902)(JVM.assets/image-20210329135627227.png)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值