注册

Android Java 虚拟机

1. 概述

image.png image.png

1.1 Java 虚拟机家族

1.1.1 HotSpot VM

Oracle JDK 和 OpenJDK 中自带的虚拟机,最主流和使用范围最广的 Java 虚拟机。

1.1.2 J9 VM

1.1.3 Zing VM

1.2 Java 虚拟机执行流程

当执行一个 Java 程序时,它的执行流程图如下:

  • 编译时环境
  • 运行时环境

image.png

2. Java 虚拟机结构

image.png

2.1 Class 文件格式

image.png

Class 文件格式: image.png

2.2 类的生命周期

image.png

image.png

2.3 类加载系统

  • Bootstrap ClassLoader(引导类加载器)
  • Extensions ClassLoader(拓展类加载器)
  • Application ClassLoader(应用程序类加载器)/ System ClassLoader(系统类加载器)

image.png

image.png

2.4 运行时数据区域

这些数据区域分别为程序计数器、Java 虚拟机栈、本地方法栈、Java 堆和方法区。

2.4.1 程序计数器

image.png

image.png

2.4.2 Java 虚拟机栈

image.png

2.4.3 本地方法栈

image.png

2.4.4 Java 堆

image.png

image.png

2.4.5 方法区

image.png

2.4.6 运行时常量池

image.png

3. 对象的创建

当虚拟机接收到一个 new 指令时,它会做如下的操作:

image.png

image.png

4. 对象的堆内存布局

image.png

image.png

5. oop-klass 模型

image.png

image.png

image.png

image.png

6. 垃圾标记算法

image.png

6.1 Java 中的引用

  • 强引用
  • 软引用
  • 弱引用
  • 虚引用

image.png

image.png

6.2 引用计数法

image.png

image.png

image.png

缺点:引用计数算法没有解决对象之间相互循环引用的问题。

6.3 根搜索算法

image.png

image.png

优点:解决了已经死亡的对象因为相互引用而不能被回收。

7. Java 对象在虚拟机中的生命周期

image.png

image.png

8. 垃圾收集算法

8.1 标记-清除算法

image.png

image.png

8.2 复制算法

image.png

image.png

8.3 标记-压缩算法

image.png

image.png

8.4 分代收集算法

image.png

8.4.1 分代收集

image.png

image.png

0 个评论

要回复文章请先登录注册