From 4b43da7b939991a9d54ef729ea9783abbc1a98c4 Mon Sep 17 00:00:00 2001
From: luoxiang <2806718453@qq.com>
Date: Mon, 23 Dec 2019 21:48:00 +0800
Subject: [PATCH] =?UTF-8?q?=E6=94=B6=E9=9B=86=E5=99=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
notes/Java_虚拟机.md | 22 +---------------------
pictures/jvm_收集器1.png | Bin 20998 -> 18015 bytes
pictures/jvm_收集器2.png | Bin 25450 -> 21813 bytes
pictures/jvm_收集器3.png | Bin 20184 -> 16833 bytes
4 files changed, 1 insertion(+), 21 deletions(-)
diff --git a/notes/Java_虚拟机.md b/notes/Java_虚拟机.md
index 3c770cc..ecffabe 100644
--- a/notes/Java_虚拟机.md
+++ b/notes/Java_虚拟机.md
@@ -78,7 +78,6 @@ Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode) # 使用的是H
-
### 2.1 程序计数器
程序计数器(Program Counter Register)是一块较小的内存空间,它可以看做是当前线程所执行的字节码的行号指示器。字节码解释器通过改变程序计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要该计数器来完成。每条线程都拥有一个独立的程序计数器,各条线程之间的计数器互不影响,独立存储。
@@ -123,7 +122,6 @@ Java 堆(Java Heap)是虚拟机所管理的最大一块的内存空间,它
-
+ **空闲列表**:如果 Java 堆不是规整的,此时虚拟机需要维护一个列表,记录哪些内存块是可用的,哪些是不可用的。在进行内存分配时,只需要从该列表中选取出一块足够的内存空间划分给对象实例即可。
> 注:Java 堆是否规整取决于其采用的垃圾收集器是否带有空间压缩整理能力,后文将会介绍。
@@ -172,13 +170,11 @@ Java 堆(Java Heap)是虚拟机所管理的最大一块的内存空间,它
-
通过直接指针访问对象:
-
句柄访问的优点在于对象移动时(垃圾收集时移动对象是非常普遍的行为)只需要改变句柄中实例数据的指针,而 `reference` 本生并不需要修改;指针访问则反之,由于其 `reference` 中存储的直接就是对象地址,所以当对象移动时, `reference` 需要被修改。但针对只需要访问对象本身的场景,指针访问则可以减少一次定位开销。由于对象访问是一项非常频繁的操作,所以这类减少的效果会非常显著,基于这个原因,HotSpot 主要使用的是指针访问的方式。
## 四、垃圾收集算法
@@ -210,7 +206,6 @@ System.gc();
-
在 Java 语言中,固定可作为 `GC Roots` 的对象包括以下几种:
+ 在虚拟机栈(栈帧中的本地变量表)中引用的对象,譬如各个线程被调用的方法堆栈中使用到的参数、局部变量、临时变量等;
@@ -272,7 +267,6 @@ System.gc();
-
它主要有以下两个缺点:
+ 执行效率不稳定:如果 Java 堆上包含大量需要回收的对象,则需要进行大量标记和清除动作;
@@ -288,7 +282,6 @@ System.gc();
-
基于新生代 “朝生夕灭” 的特点,大多数虚拟机都不会按照 1:1 的比例来进行内存划分,例如 HotSpot 虚拟机会将内存空间划分为一块较大的 `Eden` 和 两块较小的 `Survivor` 空间,它们之间的比例是 8:1:1 。 每次分配时只会使用 `Eden` 和其中的一块 `Survivor` ,发生垃圾回收时,只需要将存活的对象一次性复制到另外一块 `Survivor` 上,这样只有 10% 的内存空间会被浪费掉。当 `Survivor` 空间不足以容纳一次 `Minor GC` 时,此时由其他内存区域(通常是老年代)来进行分配担保。
#### 5. 标记-整理算法
@@ -298,7 +291,6 @@ System.gc();
-
## 五、经典垃圾收集器
并行与并发是并发编程中的专有名词,在谈论垃圾收集器的上下文语境中,它们的含义如下:
@@ -311,8 +303,7 @@ HotSpot 虚拟机中一共存在七款经典的垃圾收集器:
-
-
+> 注:收集器之间存在连线,则代表它们可以搭配使用。
### 5.1 Serial 收集器
@@ -321,7 +312,6 @@ Serial 收集器是最基础、历史最悠久的收集器,它是一个单线
-
### 5.2 ParNew 收集器
他是 Serial 收集器的多线程版本,可以使用多条线程进行垃圾回收:
@@ -329,7 +319,6 @@ Serial 收集器是最基础、历史最悠久的收集器,它是一个单线
-
### 5.3 Parallel Scavenge 收集器
Parallel Scavenge 也是新生代收集器,基于 标记-复制 算法进行实现,它的目标是达到一个可控的吞吐量。这里的吞吐量指的是处理器运行用户代码的时间与处理器总消耗时间的比值:
@@ -348,7 +337,6 @@ Parallel Scavenge 收集器提供两个参数用于精确控制吞吐量:
-
### 5.5 Paralled Old 收集器
Paralled Old 是 Parallel Scavenge 收集器的老年代版本,支持多线程并发收集,采用 标记-整理 算法实现:
@@ -356,7 +344,6 @@ Paralled Old 是 Parallel Scavenge 收集器的老年代版本,支持多线程
-
### 5.6 CMS 收集器
CMS(Concurrent Mark Sweep)收集器是一种以获取最短回收停顿时间为目标的收集器,基于 标记-清除 算法实现,整个收集过程分为以下四个阶段:
@@ -369,7 +356,6 @@ CMS(Concurrent Mark Sweep)收集器是一种以获取最短回收停顿时
-
其优点在于耗时长的 并发标记 和 并发清除 阶段都不需要暂停用户线程,因此其停顿时间较短,其主要缺点如下:
+ 由于涉及并发操作,因此对处理器资源比较敏感。
@@ -383,7 +369,6 @@ Garbage First(简称 G1)是一款面向服务端的垃圾收集器,也是
-
上面还有一些 Region 使用 H 进行标注,它代表 Humongous,表示这些 Region 用于存储大对象(humongous object,H-obj),即大小大于等于 region 一半的对象。G1 收集器的运行大致可以分为以下四个步骤:
1. **初始标记 (Inital Marking)**:标记 `GC Roots` 能直接关联到的对象,并且修改 TAMS(Top at Mark Start)指针的值,让下一阶段用户线程并发运行时,能够正确的在 Reigin 中分配新对象。G1 为每一个 Reigin 都设计了两个名为 TAMS 的指针,新分配的对象必须位于这两个指针位置以上,位于这两个指针位置以上的对象默认被隐式标记为存活的,不会纳入回收范围;
@@ -394,7 +379,6 @@ Garbage First(简称 G1)是一款面向服务端的垃圾收集器,也是
-
### 5.8 内存分配原则
#### 1. 对象优先在 Eden 分配
@@ -428,7 +412,6 @@ Java 虚拟机把描述类的数据从 Class 文件加载到内存,并对数
-
《Java 虚拟机规范》严格规定了有且只有六种情况必须立即对类进行初始化:
1. 遇到 `new`、 `getstatic`、 `putstatic`、 `invokestatic` 这四条字节码指令,如果类型进行过初始化,则需要先触发其进行初始化,能够生成这四条指令码的典型 Java 代码场景有:
@@ -508,7 +491,6 @@ JDK 9 之前的 Java 应用都是由这三种类加载器相互配合来完成
-
上图所示的各种类加载器之间的层次关系被称为类加载器的 “双亲委派模型”,“双亲委派模型” 要求除了顶层的启动类加载器外,其余的类加载器都应该有自己的父类加载器,需要注意的是这里的加载器之间的父子关系一般不是以继承关系来实现的,而是使用组合关系来复用父类加载器的代码。
双亲委派模型的工作过程如下:如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成,每一个层次的类加载器都是如此,因此所有的加载请求最终都应该传送到最顶层的启动类加载器,只有当父加载器反馈自己无法完成这个加载请求(它的搜索范围中没有找到所需的类)时,子加载器才会尝试自己去完成加载。基于双亲委派模型可以保证程序中的类在各种类加载器环境中都是同一个类,否则就有可能出现一个程序中存在两个不同的 `java.lang.Object` 的情况。
@@ -524,7 +506,6 @@ JDK 9 之后为了适应模块化的发展,类加载器做了如下变化:
-
## 七、程序编译
### 7.1 编译器分类
@@ -558,7 +539,6 @@ JDK 9 之后为了适应模块化的发展,类加载器做了如下变化:
-
实施分层编译后,解释器、客户端编译器和服务端编译器就会同时工作,可以用客户端编译器获取更高的编译速度、用服务端编译器来获取更好的编译质量。
### 7.4 热点探测
diff --git a/pictures/jvm_收集器1.png b/pictures/jvm_收集器1.png
index f877231658dfd8c68606c4223d35c639b6b6aabe..e70e7ec6395c296cb7281f733b89f3efce8cdb36 100644
GIT binary patch
literal 18015
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
literal 20998
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
HQ$iB}=T3UA
diff --git a/pictures/jvm_收集器2.png b/pictures/jvm_收集器2.png
index ddbbfa506701c5d3960812ebdfd4c07da20208af..38d17f819a6cc3c50b34ae167da03902e3e928b9 100644
GIT binary patch
literal 21813
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