Java虚拟机(JVM)浅析总结

JAVA虚拟机(本系列文章以jdk1.8为基础)

JDK,JRE,JVM三者关系

项目说明
JDK(Java Development Kit)是Sun微系统针对Java开发人员发布的免费软件开发工具包SDK,Software development kit)作为Java语言的SDK,普通用户并不需要安装JDK来运行Java程序,而只需要安装JRE(Java Runtime Environment)。而程序开发者必须安装JDK来编译、调试程序。JDK包含了一批用于Java开发的组件(eg:javac,java,jar,javadoc等),还包括完整的JRE(Java Runtime Environment),Java运行环境,也被称为private runtime。包括了用于产品环境的各种库类,如基础类库rt.jar,以及给开发人员使用的补充库,如国际化与本地化的类库、IDL库等等
JRE(Java Runtime Environment)一个软件,由Sun微系统所研发,JRE可以让电脑系统运行Java应用程序(Java Application),JRE的内部有一个Java虚拟机(Java Virtual Machine,JVM)以及一些标准的类别函数库(Class Library)
JVM(Java Virtual Machine)一种能够运行Java bytecode的虚拟机,以堆栈结构机器来进行实做。最早由Sun微系统所研发并实现第一个实现版本,是Java平台的一部分,能够运行以Java语言写作的软件程序,java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。通过对中央处理器(CPU)所执行的软件实现,实现能执行编译过的Java程序码(Applet与应用程序),作为一种编程语言的虚拟机,实际上不只是专用于Java语言,只要生成的编译文件符合JVM对加载编译文件格式要求,任何语言都可以由JVM编译运行

三者的关系一图示之:
JDKJREJVM关系图

JVM的指令集(java编译器)架构模型

主流的两种架构特点比较

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

所以JVM的指令集(java编译器)架构模型是基于栈的指令集架构

JVM的生命周期

流程说明
jvm启动通过引导类加载器(bootstrap class loader)创建一个初始类(inital class),初始化类根据不同的虚拟机(eg: Classic VM,Exact VM,HotSport,JRockit,j9)类型来决定其实现
jvm执行执行java程序,程序开始虚拟机执行,程序结束虚拟机结束执行,java程序在jvm中相当于虚拟机到的一个进程
jvm退出包含正常退出,异常退出,可调用java api主动退出eg:Runtime类或者exit方法,halt方法
通俗三个流程概述启动:任何class文件的main函数都可认为是jvm示例的起点。
运行:以main函数为起点,后续的线程都由它启动,包括守护线程和用户线程。main方法启动的线程是用户线程,守护线程是JVM自己使用的线程如GC线程。
退出&异常退出:用户线程完全退出了,jvm示例结束生命周期。

Java代码简单执行流程

Java代码简单执行流程

JVM结构体系图(记住这个图,以此展开拓展)

JVM结构体系图

JVM类加载器(类装载子系统)

1JVM类加载器(类装载子系统)

运行时数据区(Runtime Data Area)

2运行时数据区(Runtime Data Area)

执行引擎(Execution Engine)

3执行引擎(Execution Engine)

垃圾回收(GC)

4垃圾回收(GC)

Class文件结构

5Class文件结构

字节码指令集

6Java字节码,指令集汇编(转载)

字节码指令集

7 JVM监控与调优

其他优秀文章地址

https://www.cnblogs.com/ding-dang/p/13129619.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值