JVM学习笔记:JVM的体系结构与JVM的生命周期

1 JVM在java平台中的位置

1.1 Java平台组成

Java平台主要由Java虚拟机和Java API这两部分组成。参考Oracle官网


1.2 java平台结构图

JDK1.2开始,迫于Java运行始终笔C++慢的压力,JVM的结构也慢慢发生了一些变化,JVM在某些场景下可以操作一定的硬件平台,一些核心的Java库甚至也可以操作底层的硬件平台,从而大大提升了Java的执行效率。JDK1.2之后的整个java平台如下图所示:

 

1.3 JVM与JRE、JDK的关系

参照Oracle官网的介绍可知,JVM与JRE、JDK的关系如下:

JVM:负责执行符合规范的Class文件。

JRE:包含JVM与类库。

JDK:包含JRE与一些开发工具,如javac、javap等。

 

1.4 java虚拟机在整个程序流程中的位置

 

2 JVM的体系结构

2.1 什么是虚拟机

模拟执行某种指令集体系绌构的软件。有多种分类,比如进程虚拟机(高级语言虚拟机),系统虚拟机,协设计虚拟机。

 

2.2什么是Java虚拟机

(1)有多层含义:

  • 一套规范:Java虚拟机规范,定义概念上Java虚拟机的行为表现。
  • 一种实现:例如HotSpot、J9、JRockit。需要实现JVM规范,但具体实现方式不需要与“概念中”的JVM一样。
  • 一个运行中的实例:某个JVM实现的某次运行的实例。

(2)只要输入符合规范的Class文件即可执行。

(3)并非一定要执行“Java”程序,可以支持其他语言,比如Groovy,Jython等。

 

2.3 概念中JVM体系结构

 

 

2.4 JVM的内部体系结构分为三部分

(1)类装载器(ClassLoader)子系统

作用:用来装载.class文件。

(2)执行引擎

作用:执行字节码,或者执行本地方法。

(3)运行时数据区

方法区,堆,java栈,PC寄存器,本地方法栈。

 

3 JVM的生命周期

3.1 两个概念:JVM实例和JVM执行引擎实例

(1)JVM实例对应了一个独立运行的java程序,它是进程级别。

(2)JVM执行引擎实例则对应了属于用户运行程序的线程,它是线程级别的。

 

3.2 JVM的生命周期

(1)JVM实例的诞生

当启动一个Java程序时,一个JVM实例就产生了,任何一个拥有public static void main(String[] args)函数的class都可以作为JVM实例运行的起点。

(2)JVM实例的运行

main()作为该程序初始线程的起点,任何其他线程均由该线程启动。

JVM内部有两种线程:守护线程和非守护线程,main()属于非守护线程,守护线程通常由JVM自己使用,java程序也可以标明自己创建的线程是守护线程。

(3)JVM实例的消亡

当程序中的所有非守护线程都终止时,JVM才退出;若安全管理器允许,程序也可以使用Runtime类或者System.exit()来退出。

 

4 Class文件

4.1 Class文件所记录的信息

(1)结构信息

  • Class文件格式版本号
  • 各部分的数量与大小

(2)元数据

  • 类/ 继承的超类/ 实现的接口的声明信息
  • 域与方法声明信息
  • 常量池
  • 用户自定义的、RetentionPolicy为CLASS或RUNTIME的注解
  • ——对应Java源代码中“声明”与“常量”对应的信息

(3)方法信息

  • 字节码
  • 异常处理器表
  • 操作数栈与局部变量区大小
  • 操作数栈的类型记录(StackMapTable,Java 6开始)
  • 调试用符号信息(如LineNumberTable、LocalVariableTable)
  • ——对应Java源代码中“语句“与“表达式”对应的信息

4.2 class文件不只是字节码

字节码只代表程序逻辑,只是Class文件众多组成部分其中之一。

 

参考资料

莫枢JVM技术分享PPT。

淘宝应届生培训 JVM工作原理PPT。

http://yhjhappy234.blog.163.com/blog/static/3163283220122204355694/

 

转载于:https://www.cnblogs.com/tsiangleo/p/4403548.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值