diff --git a/docs/java/jvm/jdk-monitoring-and-troubleshooting-tools.md b/docs/java/jvm/jdk-monitoring-and-troubleshooting-tools.md
index cef864f8..ef0d12e4 100644
--- a/docs/java/jvm/jdk-monitoring-and-troubleshooting-tools.md
+++ b/docs/java/jvm/jdk-monitoring-and-troubleshooting-tools.md
@@ -1,11 +1,10 @@
---
+title: JDK 监控和故障处理工具总结
category: Java
tag:
- JVM
---
-# JDK 监控和故障处理工具总结
-
## JDK 命令行工具
这些命令在 JDK 安装目录下的 bin 目录下:
diff --git a/docs/java/jvm/jvm-garbage-collection.md b/docs/java/jvm/jvm-garbage-collection.md
index 06530d9b..19783352 100644
--- a/docs/java/jvm/jvm-garbage-collection.md
+++ b/docs/java/jvm/jvm-garbage-collection.md
@@ -41,7 +41,7 @@ Java 堆是垃圾收集器管理的主要区域,因此也被称作 **GC 堆(
下图所示的 Eden 区、两个 Survivor 区 S0 和 S1 都属于新生代,中间一层属于老年代,最下面一层属于永久代。
-
+
**JDK 8 版本之后 PermGen(永久) 已被 Metaspace(元空间) 取代,元空间使用的是直接内存** 。
@@ -65,14 +65,14 @@ public class GCTest {
```
通过以下方式运行:
-
+
添加的参数:`-XX:+PrintGCDetails`
-
+
运行结果 (红色字体描述有误,应该是对应于 JDK1.7 的永久代):
-
+
从上图我们可以看出 Eden 区内存几乎已经被分配完全(即使程序什么也不做,新生代也会使用 2000 多 k 内存)。
@@ -82,7 +82,7 @@ public class GCTest {
allocation2 = new byte[900*1024];
```
-
+
给 `allocation2` 分配内存的时候 Eden 区内存几乎已经被分配完了
@@ -158,7 +158,7 @@ public class GCTest {
上面的说法已经在《深入理解 Java 虚拟机》第三版中被改正过来了。感谢 R 大的回答:
-
+
**总结:**
@@ -194,7 +194,9 @@ public class GCTest {
- 当引用失效,计数器就减 1;
- 任何时候计数器为 0 的对象就是不可能再被使用的。
-**这个方法实现简单,效率高,但是目前主流的虚拟机中并没有选择这个算法来管理内存,其最主要的原因是它很难解决对象之间相互循环引用的问题。**
+**这个方法实现简单,效率高,但是目前主流的虚拟机中并没有选择这个算法来管理内存,其最主要的原因是它很难解决对象之间循环引用的问题。**
+
+
所谓对象之间的相互引用问题,如下面代码所示:除了对象 `objA` 和 `objB` 相互引用着对方之外,这两个对象之间再无任何引用。但是他们因为互相引用对方,导致它们的引用计数器都不为 0,于是引用计数算法无法通知 GC 回收器回收他们。
@@ -218,7 +220,7 @@ public class ReferenceCountingGc {
下图中的 `Object 6 ~ Object 10` 之间虽有引用关系,但它们到 GC Roots 不可达,因此为需要被回收的对象。
-
+
**哪些对象可以作为 GC Roots 呢?**
@@ -249,6 +251,8 @@ JDK1.2 之前,Java 中引用的定义很传统:如果 reference 类型的数
JDK1.2 以后,Java 对引用的概念进行了扩充,将引用分为强引用、软引用、弱引用、虚引用四种(引用强度逐渐减弱)
+
+
**1.强引用(StrongReference)**
以前我们使用的大部分引用实际上都是强引用,这是使用最普遍的引用。如果一个对象具有强引用,那就类似于**必不可少的生活用品**,垃圾回收器绝不会回收它。当内存空间不足,Java 虚拟机宁愿抛出 OutOfMemoryError 错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足问题。
@@ -289,7 +293,7 @@ JDK1.2 以后,Java 对引用的概念进行了扩充,将引用分为强引
假如在字符串常量池中存在字符串 "abc",如果当前没有任何 String 对象引用该字符串常量的话,就说明常量 "abc" 就是废弃常量,如果这时发生内存回收的话而且有必要的话,"abc" 就会被系统清理出常量池了。
-### 如何判断一个类是无用的类
+### 如何判断一个类是无用的类?
方法区主要回收的是无用的类,那么如何判断一个类是无用的类的呢?
@@ -305,30 +309,47 @@ JDK1.2 以后,Java 对引用的概念进行了扩充,将引用分为强引
### 标记-清除算法
-该算法分为“标记”和“清除”阶段:首先标记出所有不需要回收的对象,在标记完成后统一回收掉所有没有被标记的对象。它是最基础的收集算法,后续的算法都是对其不足进行改进得到。这种垃圾收集算法会带来两个明显的问题:
+标记-清除(Mark-and-Sweep)算法分为“标记(Mark)”和“清除(Sweep)”阶段:首先标记出所有不需要回收的对象,在标记完成后统一回收掉所有没有被标记的对象。
-1. **效率问题**
-2. **空间问题(标记清除后会产生大量不连续的碎片)**
+它是最基础的收集算法,后续的算法都是对其不足进行改进得到。这种垃圾收集算法会带来两个明显的问题:
-
+1. **效率问题** :标记和清除两个过程效率都不高。
+2. **空间问题** :标记清除后会产生大量不连续的内存碎片。
-### 标记-复制算法
+
-为了解决效率问题,“标记-复制”收集算法出现了。它可以将内存分为大小相同的两块,每次使用其中的一块。当这一块的内存使用完后,就将还存活的对象复制到另一块去,然后再把使用的空间一次清理掉。这样就使每次的内存回收都是对内存区间的一半进行回收。
+关于具体是标记可回收对象还是不可回收对象,众说纷纭,两种说法其实都没问题,我个人更倾向于是前者。
-
+如果按照前者的理解,整个标记-清除过程大致是这样的:
+
+1. 当一个对象别创建时,给一个标记位,假设为 0(false);
+2. 在标记阶段,我们将所有可达对象(或用户可以引用的对象)的标记位设置为 1(true);
+3. 扫描阶段清除的就是标记位为 0(false)的对象。
+
+### 复制算法
+
+为了解决标记-清除算法的效率和内存碎片问题,复制(Copying)收集算法出现了。它可以将内存分为大小相同的两块,每次使用其中的一块。当这一块的内存使用完后,就将还存活的对象复制到另一块去,然后再把使用的空间一次清理掉。这样就使每次的内存回收都是对内存区间的一半进行回收。
+
+
+
+虽然改进了标记-清除算法,但依然存在下面这些问题:
+
+- **可用内存变小** :可用内存缩小为原来的一半。
+- **不适合老年代** :如果存活对象数量比较大,复制性能会变得很差。
### 标记-整理算法
-根据老年代的特点提出的一种标记算法,标记过程仍然与“标记-清除”算法一样,但后续步骤不是直接对可回收对象回收,而是让所有存活的对象向一端移动,然后直接清理掉端边界以外的内存。
+标记-整理(Mark-and-Compact)算法是根据老年代的特点提出的一种标记算法,标记过程仍然与“标记-清除”算法一样,但后续步骤不是直接对可回收对象回收,而是让所有存活的对象向一端移动,然后直接清理掉端边界以外的内存。
-
+
+
+由于多了整理这一步,因此效率也不高,适合老年代这种垃圾回收频率不是很高的场景。
### 分代收集算法
-当前虚拟机的垃圾收集都采用分代收集算法,这种算法没有什么新的思想,只是根据对象存活周期的不同将内存分为几块。一般将 java 堆分为新生代和老年代,这样我们就可以根据各个年代的特点选择合适的垃圾收集算法。
+当前虚拟机的垃圾收集都采用分代收集算法,这种算法没有什么新的思想,只是根据对象存活周期的不同将内存分为几块。一般将 Java 堆分为新生代和老年代,这样我们就可以根据各个年代的特点选择合适的垃圾收集算法。
-**比如在新生代中,每次收集都会有大量对象死去,所以可以选择”标记-复制“算法,只需要付出少量对象的复制成本就可以完成每次垃圾收集。而老年代的对象存活几率是比较高的,而且没有额外的空间对它进行分配担保,所以我们必须选择“标记-清除”或“标记-整理”算法进行垃圾收集。**
+比如在新生代中,每次收集都会有大量对象死去,所以可以选择”标记-复制“算法,只需要付出少量对象的复制成本就可以完成每次垃圾收集。而老年代的对象存活几率是比较高的,而且没有额外的空间对它进行分配担保,所以我们必须选择“标记-清除”或“标记-整理”算法进行垃圾收集。
**延伸面试问题:** HotSpot 为什么要分为新生代和老年代?
@@ -346,7 +367,7 @@ Serial(串行)收集器是最基本、历史最悠久的垃圾收集器了
**新生代采用标记-复制算法,老年代采用标记-整理算法。**
-
+
虚拟机的设计者们当然知道 Stop The World 带来的不良用户体验,所以在后续的垃圾收集器设计中停顿时间在不断缩短(仍然还有停顿,寻找最优秀的垃圾收集器的过程仍然在继续)。
@@ -354,11 +375,11 @@ Serial(串行)收集器是最基本、历史最悠久的垃圾收集器了
### ParNew 收集器
-**ParNew 收集器其实就是 Serial 收集器的多线程版本,除了使用多线程进行垃圾收集外,其余行为(控制参数、收集算法、回收策略等等)和 Serial 收集器完全一样。**
+ParNew 收集器其实就是 Serial 收集器的多线程版本,除了使用多线程进行垃圾收集外,其余行为(控制参数、收集算法、回收策略等等)和 Serial 收集器完全一样。
**新生代采用标记-复制算法,老年代采用标记-整理算法。**
-
+
它是许多运行在 Server 模式下的虚拟机的首要选择,除了 Serial 收集器外,只有它能与 CMS 收集器(真正意义上的并发收集器,后面会介绍到)配合工作。
@@ -372,7 +393,7 @@ Serial(串行)收集器是最基本、历史最悠久的垃圾收集器了
Parallel Scavenge 收集器也是使用标记-复制算法的多线程收集器,它看上去几乎和 ParNew 都一样。 **那么它有什么特别之处呢?**
-```
+```bash
-XX:+UseParallelGC
使用 Parallel 收集器+ 老年代串行
@@ -380,14 +401,13 @@ Parallel Scavenge 收集器也是使用标记-复制算法的多线程收集器
-XX:+UseParallelOldGC
使用 Parallel 收集器+ 老年代并行
-
```
-**Parallel Scavenge 收集器关注点是吞吐量(高效率的利用 CPU)。CMS 等垃圾收集器的关注点更多的是用户线程的停顿时间(提高用户体验)。所谓吞吐量就是 CPU 中用于运行用户代码的时间与 CPU 总消耗时间的比值。** Parallel Scavenge 收集器提供了很多参数供用户找到最合适的停顿时间或最大吞吐量,如果对于收集器运作不太了解,手工优化存在困难的时候,使用 Parallel Scavenge 收集器配合自适应调节策略,把内存管理优化交给虚拟机去完成也是一个不错的选择。
+Parallel Scavenge 收集器关注点是吞吐量(高效率的利用 CPU)。CMS 等垃圾收集器的关注点更多的是用户线程的停顿时间(提高用户体验)。所谓吞吐量就是 CPU 中用于运行用户代码的时间与 CPU 总消耗时间的比值。 Parallel Scavenge 收集器提供了很多参数供用户找到最合适的停顿时间或最大吞吐量,如果对于收集器运作不太了解,手工优化存在困难的时候,使用 Parallel Scavenge 收集器配合自适应调节策略,把内存管理优化交给虚拟机去完成也是一个不错的选择。
**新生代采用标记-复制算法,老年代采用标记-整理算法。**
-
+
**这是 JDK1.8 默认收集器**
@@ -406,10 +426,14 @@ JDK1.8 默认使用的是 Parallel Scavenge + Parallel Old,如果指定了-XX:
**Serial 收集器的老年代版本**,它同样是一个单线程收集器。它主要有两大用途:一种用途是在 JDK1.5 以及以前的版本中与 Parallel Scavenge 收集器搭配使用,另一种用途是作为 CMS 收集器的后备方案。
+
+
### Parallel Old 收集器
**Parallel Scavenge 收集器的老年代版本**。使用多线程和“标记-整理”算法。在注重吞吐量以及 CPU 资源的场合,都可以优先考虑 Parallel Scavenge 收集器和 Parallel Old 收集器。
+
+
### CMS 收集器
**CMS(Concurrent Mark Sweep)收集器是一种以获取最短回收停顿时间为目标的收集器。它非常符合在注重用户体验的应用上使用。**
@@ -423,7 +447,7 @@ JDK1.8 默认使用的是 Parallel Scavenge + Parallel Old,如果指定了-XX:
- **重新标记:** 重新标记阶段就是为了修正并发标记期间因为用户程序继续运行而导致标记产生变动的那一部分对象的标记记录,这个阶段的停顿时间一般会比初始标记阶段的时间稍长,远远比并发标记阶段时间短
- **并发清除:** 开启用户线程,同时 GC 线程开始对未标记的区域做清扫。
-
+
从它的名字就可以看出它是一款优秀的垃圾收集器,主要优点:**并发收集、低停顿**。但是它有下面三个明显的缺点:
@@ -449,6 +473,8 @@ G1 收集器的运作大致分为以下几个步骤:
- **最终标记**
- **筛选回收**
+
+
**G1 收集器在后台维护了一个优先列表,每次根据允许的收集时间,优先选择回收价值最大的 Region(这也就是它的名字 Garbage-First 的由来)** 。这种使用 Region 划分内存空间以及有优先级的区域回收方式,保证了 G1 收集器在有限时间内可以尽可能高的收集效率(把内存化整为零)。
### ZGC 收集器
@@ -457,7 +483,15 @@ G1 收集器的运作大致分为以下几个步骤:
在 ZGC 中出现 Stop The World 的情况会更少!
-详情可以看 : [《新一代垃圾回收器 ZGC 的探索与实践》](https://tech.meituan.com/2020/08/06/new-zgc-practice-in-meituan.html)
+Java11 的时候 ,ZGC 还在试验阶段。经过多个版本的迭代,不断的完善和修复问题,ZGC 在 Java 15 已经可以正式使用了!
+
+不过,默认的垃圾回收器依然是 G1。你可以通过下面的参数启动 ZGC:
+
+```bash
+$ java -XX:+UseZGC className
+```
+
+关于 ZGC 收集器的详细介绍推荐阅读美团技术团队的 [新一代垃圾回收器 ZGC 的探索与实践](https://tech.meituan.com/2020/08/06/new-zgc-practice-in-meituan.html) 这篇文章。
## 参考
diff --git a/docs/java/jvm/memory-area.md b/docs/java/jvm/memory-area.md
index dc2dafbe..9c3d130f 100644
--- a/docs/java/jvm/memory-area.md
+++ b/docs/java/jvm/memory-area.md
@@ -21,15 +21,17 @@ tag:
## 运行时数据区域
-Java 虚拟机在执行 Java 程序的过程中会把它管理的内存划分成若干个不同的数据区域。JDK 1.8 和之前的版本略有不同,下面会介绍到。
+Java 虚拟机在执行 Java 程序的过程中会把它管理的内存划分成若干个不同的数据区域。
-**JDK 1.8 之前** :
+JDK 1.8 和之前的版本略有不同,我们这里以 JDK 1.7 和 JDK 1.8 这两个版本为例介绍。
-
+**JDK 1.7** :
-**JDK 1.8 之后** :
+
-
+**JDK 1.8** :
+
+
**线程私有的:**
@@ -91,7 +93,7 @@ Java 方法有两种返回方式,一种是 return 语句正常返回,一种
- **`StackOverFlowError`:** 若栈的内存大小不允许动态扩展,那么当线程请求栈的深度超过当前 Java 虚拟机栈的最大深度的时候,就抛出 `StackOverFlowError` 错误。
- **`OutOfMemoryError`:** 如果栈的内存大小可以动态扩展, 如果虚拟机在动态扩展栈时无法申请到足够的内存空间,则抛出`OutOfMemoryError`异常。
-
+
### 本地方法栈
@@ -117,9 +119,9 @@ Java 堆是垃圾收集器管理的主要区域,因此也被称作 **GC 堆(
下图所示的 Eden 区、两个 Survivor 区 S0 和 S1 都属于新生代,中间一层属于老年代,最下面一层属于永久代。
-
+
-**JDK 8 版本之后 PermGen(永久) 已被 Metaspace(元空间) 取代,元空间使用的是本地内存。** (我会在方法区这部分内容详细介绍到)。
+**JDK 8 版本之后 PermGen(永久代) 已被 Metaspace(元空间) 取代,元空间使用的是本地内存。** (我会在方法区这部分内容详细介绍到)。
大部分情况,对象都会首先在 Eden 区域分配,在一次新生代垃圾回收后,如果对象还存活,则会进入 S0 或者 S1,并且对象的年龄还会加 1(Eden 区->Survivor 区后对象的初始年龄变为 1),当它的年龄增加到一定程度(默认为 15 岁),就会被晋升到老年代中。对象晋升到老年代的年龄阈值,可以通过参数 `-XX:MaxTenuringThreshold` 来设置。
diff --git a/docs/java/jvm/pictures/class-loader-parents-delegation-model.drawio b/docs/java/jvm/pictures/class-loader-parents-delegation-model.drawio
deleted file mode 100644
index 711f920f..00000000
--- a/docs/java/jvm/pictures/class-loader-parents-delegation-model.drawio
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/docs/java/jvm/pictures/class-loading-procedure.drawio b/docs/java/jvm/pictures/class-loading-procedure.drawio
deleted file mode 100644
index c8ce81db..00000000
--- a/docs/java/jvm/pictures/class-loading-procedure.drawio
+++ /dev/null
@@ -1 +0,0 @@
-7VrZbus2EP0aAvc+yNC+PEq2dYugQYOmwG0faYmWlMiiS9GJ068vN1mSJadJEy8IjAQ2OUNxmTk8w5EJrOlq+4PAdX6LU1QCU0+3wJoB0zQM3WVfXPIiJZ4fSEFGilQ1agX3xT9ICXUl3RQpqnsNKcYlLdZ9YYKrCiW0J4OE4Od+syUu+6OuYYYGgvsElkPpzyKluZT6ptfKf0FFljcjG65a3wImjxnBm0qNB0wrduM49qV6BZu+1ELrHKb4uSOy5sCaEoypLK22U1Ry2zZmk8/FB7S7eRNU0bc8cPOHldzePP12Vz4s4p9oujEf7jRTea+mL41BUMrso6qY0BxnuILlvJVGYtGId6uzWtvmV4zXTGgw4QOi9EU5G24oZqKcrkqlrSnBjztzM0tES1zRGK6KkqPoBtGIwKKq2cRucYWV/h5vSMI7zCll4DAdK2QfbL38gzeoJxnGWYnguqgnCV4JRVKLpvFS9s6K3f4dM+qOICds8mVJu3BjHLS3EtXNvA4aeedttosQXiFK2ER0gkpIi6d+/1DBOdu12z16hws2sqk3W89WvlMbzwn0fhcUkgxR9VQLDFboTKMVCbi8BzpytCdYblCzA/ag1AKFe/05Lyi6X0Nhq2fGJq+BwuIuKcpyiktMRG9WCpG/THYtG02FK3QRCFL2QISi7euYGWJBPeDpE8/pedVrePK5JSfDUbK8Q0yefhhAPde/18/W0M9zB/ghCHUw90E04//7nmcmoGPu3Xdax8NKBMsiq1g1YSZDTB5xgxaMr0OlWBVpKmhoDE99aursaSP4Khjx/QFGLGeIEcMeYsQ8Fkb8U3OBrjszL/rSXOCYwcS8NDIIxsnAB8GMF0IP+JGQTEEwPFpcWeF4aLG9AVrOTgvGSOw4Li/Y09AOvC/NC8MzgmOMOPqktNCg6rRpBDMYeflTPS8qf/HKxGmqs21XOXs5QACXmI68Pf2Qx/zXnOMeJf8wjUF8chxu/F4/Mjk6WhLSIL8XkAIQhjwCsdNpGAPfGGDzGodOeDp17JFDy2nDkHsNQ5/uaEsfbv/zxyHvGocuNw4FR4lDtnMJcWgkA+ZpEMuHXJEY2bx8jUOnoydzkA+dPxCNxJ2zvW2/RI9/ytt2I3gjH/kfpKOPRaqRNynXM8nnvzI7/5mkYZNeaPD5q7LQAnMXBHPQ/HJzDQ1nelV2AaHhs1+VDVw3REoK63zX3eUePj+YpvQcbY+8QXeDETow7aN52h7lgyjmTMD4wJ+D0OFDzAMQWCDqCi+dJEz96+DGmPQ5wnbOzhHeCEe4JVU27WHD/XuDG4VWC+8wC+uGu94KAzV6VsrEN89WWJ4yBXMbRFPATgpcEoOIFWIhCW/gE/zBr+s0oy7IB8f0+G/HgcELYQSCYDfUAxtK3AyaJFUzGpDI2D19mbuhhAtURru7QSPHrIaVXVXvnNEi8Sf6pOwQiivVaf2IaJI3leYikf45UB9JoG1vBOv+CE0aR8P62E/KEge5OYq6Bd5y0BVVJmG3wCRFRGNiYSZ9QRB81OBSeJg3gE+4SDV5P6xtwKiEI7xtIZWYrHPIWEbIbSnbx/nEJWglVSuWfBSVRnmKxnUms/C+coEpZcQm9PqkVa9xXUjfh710hOsSiZVQWIZ807QcwZQtWePg14T2u2q5IXXTVO0MViqLCmmNA+Wknc5iFLEKze+YTRADc8qtzZau1YgUS9lYjKZ2TSi8AYkaob0Wp3UmS7LFN9NxZG/dwvc9ZtCTEtZ1z7GrVEOst0WJk0duvbRZtKwscbKpR8hFoaVew+r/4OW/prQuWdSRM0BbNkZ6gN8MEEUjF2ZkxPc9QX0+/9W8ZTk55f4ymJjj/qKp7+LPk+N3/D5EnqZt7Z0TLGvInbtjaJc7rfdzJ6u2F0blu8v2Vq41/xc=
\ No newline at end of file
diff --git a/docs/java/jvm/pictures/class-loading-process-verification.drawio b/docs/java/jvm/pictures/class-loading-process-verification.drawio
deleted file mode 100644
index 7dadc47b..00000000
--- a/docs/java/jvm/pictures/class-loading-process-verification.drawio
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/docs/java/jvm/pictures/hotspot-heap-structure.drawio b/docs/java/jvm/pictures/hotspot-heap-structure.drawio
deleted file mode 100644
index 95fba213..00000000
--- a/docs/java/jvm/pictures/hotspot-heap-structure.drawio
+++ /dev/null
@@ -1 +0,0 @@
-5Vlbb5swFP41lraHVuZm4DEktFunTt1StdNeJgMOsAJmxmmS/vrZYJoLrpRJaVot6gPwHV+Ov+8c59gF1rhcXjJcZ9c0IQUwYbIE1gSYpmFAJB4SWXWI77sdkLI8UY3WwDR/IgqECp3nCWm2GnJKC57X22BMq4rEfAvDjNHFdrMZLbZnrXFKBsA0xsUQvc8TnnWoZ7pr/BPJ06yf2UB+Zylx31itpMlwQhcbkBUCa8wo5d1buRyTQpLX89L1u3jB+uwYIxXfp0N6R+qv9O4iKe68X1cl/P51XJ+pUR5xMVcLDhNSKYf5qmeB0XmVEDmQAaxgkeWcTGscS+tC6C6wjJeFMs/yohjTgrK2r5U4xEtsgTec0QeyYfHMyEJIWh4IjyVbUHanFVdxYEjjcJ2904RxstyA1LovCS0JZyvRpLc6XQ8VgxZSkizWihqWwrJNNaECsYqi9HnoNdHiRXH9D7ybA96n8LCsY+LNYh3rKPZINDsG6/YetJvOMWm3B7TfkmrOBMeH5H42IyjWcp+4fgTh8SPe9p0B9Zanob7HDs68O2AemKgQswb1FvHoz1xuiC0nZ01Lykg0MFC9bJnp7eItlc8bwspLUn3oR2tqXGkHjDsV5GAsjT44YpsWK4FIPV3vYzsqFATzM1zkadU1Lsismw/u7VLviyCqc6fD35GLgjRcyeiSvxnv3VkhL2GY57R6wdePG3i9XsAhM9qLiT6jI8+xnTfIaGQMN1NtRvuvtZf2Dm2k9CfKm5rKqLq7FjrgUrJaRU3dCQ5CB4wg8BAIXRAEwLdAiIAfAs8G4QUIxsDzriZfjHO3//QHKspw2pZqW5KKVmRHPwWpGJzEQgMi8EByn4tKb6QMZZ4kchptbKyjZ0dfcyD+AcRG7vnObyccym16mpLFPIDcN7cL9Pg5Dx5/2FdPP28jnrDPmkpxavxvFYvpwjesWFbNKM3Y2Y/q6b5Mb+xrGM2aEynQHbgH8a9WoWuJP4UKHVnvLt6tU6nQd0P+qCW6lvrh4eiacNxx+p8VU7vkH7Wa0pL/esWUd+rFlOOYb1lNaeVGJ1BNuc5b3v/EE+J8S6xf2WTVzJuJOITe32iqKZlGItFHYxDaMkt8t0VExvSHEH90hR/xpbyH7s+ZEdv7zmJwmm3TdQJ8Q76MRN76z/P8FvO0993n8bDCex+5WuCIFAGOH9IW3518J4jk90bkBe1fOybvzvPdoJqEH0SZJhZfDDzLHhyfNPu7oUt4498jT3yuL/Fb28a/QqzwLw==
\ No newline at end of file
diff --git a/docs/java/jvm/pictures/hotspot-heap-structure.png b/docs/java/jvm/pictures/hotspot-heap-structure.png
deleted file mode 100644
index 07008e94..00000000
Binary files a/docs/java/jvm/pictures/hotspot-heap-structure.png and /dev/null differ
diff --git a/docs/java/jvm/pictures/jvm垃圾回收/01d330d8-2710-4fad-a91c-7bbbfaaefc0e.png b/docs/java/jvm/pictures/jvm垃圾回收/01d330d8-2710-4fad-a91c-7bbbfaaefc0e.png
deleted file mode 100644
index 26064a24..00000000
Binary files a/docs/java/jvm/pictures/jvm垃圾回收/01d330d8-2710-4fad-a91c-7bbbfaaefc0e.png and /dev/null differ
diff --git a/docs/java/jvm/pictures/jvm垃圾回收/22018368.png b/docs/java/jvm/pictures/jvm垃圾回收/22018368.png
deleted file mode 100644
index 9979d9a7..00000000
Binary files a/docs/java/jvm/pictures/jvm垃圾回收/22018368.png and /dev/null differ
diff --git a/docs/java/jvm/pictures/jvm垃圾回收/22018368213213.png b/docs/java/jvm/pictures/jvm垃圾回收/22018368213213.png
deleted file mode 100644
index 9979d9a7..00000000
Binary files a/docs/java/jvm/pictures/jvm垃圾回收/22018368213213.png and /dev/null differ
diff --git a/docs/java/jvm/pictures/jvm垃圾回收/25178350.png b/docs/java/jvm/pictures/jvm垃圾回收/25178350.png
deleted file mode 100644
index e9b6a360..00000000
Binary files a/docs/java/jvm/pictures/jvm垃圾回收/25178350.png and /dev/null differ
diff --git a/docs/java/jvm/pictures/jvm垃圾回收/46873026.png b/docs/java/jvm/pictures/jvm垃圾回收/46873026.png
deleted file mode 100644
index 00ac0065..00000000
Binary files a/docs/java/jvm/pictures/jvm垃圾回收/46873026.png and /dev/null differ
diff --git a/docs/java/jvm/pictures/jvm垃圾回收/72762049.png b/docs/java/jvm/pictures/jvm垃圾回收/72762049.png
deleted file mode 100644
index 4a81ee87..00000000
Binary files a/docs/java/jvm/pictures/jvm垃圾回收/72762049.png and /dev/null differ
diff --git a/docs/java/jvm/pictures/jvm垃圾回收/82825079.png b/docs/java/jvm/pictures/jvm垃圾回收/82825079.png
deleted file mode 100644
index 1bf05285..00000000
Binary files a/docs/java/jvm/pictures/jvm垃圾回收/82825079.png and /dev/null differ
diff --git a/docs/java/jvm/pictures/jvm垃圾回收/90984624.png b/docs/java/jvm/pictures/jvm垃圾回收/90984624.png
deleted file mode 100644
index 44e9cf3c..00000000
Binary files a/docs/java/jvm/pictures/jvm垃圾回收/90984624.png and /dev/null differ
diff --git a/docs/java/jvm/pictures/jvm垃圾回收/94057049.png b/docs/java/jvm/pictures/jvm垃圾回收/94057049.png
deleted file mode 100644
index 719d5cd3..00000000
Binary files a/docs/java/jvm/pictures/jvm垃圾回收/94057049.png and /dev/null differ
diff --git a/docs/java/jvm/pictures/jvm垃圾回收/CMS收集器.png b/docs/java/jvm/pictures/jvm垃圾回收/CMS收集器.png
deleted file mode 100644
index 1bf05285..00000000
Binary files a/docs/java/jvm/pictures/jvm垃圾回收/CMS收集器.png and /dev/null differ
diff --git a/docs/java/jvm/pictures/jvm垃圾回收/jvm-gc-roots.drawio b/docs/java/jvm/pictures/jvm垃圾回收/jvm-gc-roots.drawio
deleted file mode 100644
index 6d4f78da..00000000
--- a/docs/java/jvm/pictures/jvm垃圾回收/jvm-gc-roots.drawio
+++ /dev/null
@@ -1 +0,0 @@
-7Vrtc5owHP5r8rE9IILwUay11223rd368mkXIQI2Ehdj1f31CxjkxWBtzw3a89q7Jk8SAs/ze34kKQD2p6shQ7PwC/UxAYbmrwC8AIbhGAZIfjV/vQFsqG+AgEX+BioAt9EfLEFNoovIx/NSR04p4dGsDHo0jrHHSxhijC7L3caUlGedoQDvALceIrvofeTzUD6F0c3xKxwFYTazbjmblinKOssnmYfIp8sCBAcA9hmlfFOarvqYJNxlvGzGXda0bm+M4ZgfMuBh6v6KbsK70fWPP7qxmEfXd6szoyNvjq+zJ8a+IEBWKeMhDWiMyCBHXUYXsY+Ty2qiNn/C3AtlJR/wmdKZAHUBTjDnayktWnAqoJBPiWydc0aftuTmSJ8SytJbgpZn49FYtIwjQgq4j7A99hKcxlxOoFuivsuNpGtOF8zDewjJYgyxAPN9xG36JWQVJpDMDzGdYs7WogPDBPHouRxNSAZlsO2X6yYKUrrXyGieZHyTjLBVMsrrPiOykDMNxYW0G5Ej5rsCEyKSYCLkMow4vp2hlJGlSMNlZaqsVtgfj7HleSq9/K4z0nZio1aUZ8w4Xu2lMWu1ZE6ULwXdkfVlnmL1LG+GhfRqa//KQNbJQKr89qKBOq0ykLFjoK+jSbIsMDR9V+AjGWjLfr1exzZQp+wfCJv2D6wn3vhIxG8ZbA3z2Ur0lLnKGenFzGW1KnN16g0EP5KBKpmr0/ib36wnXrE3er/EVzNX88wbduOZC68i/lAoPyaXOjdl7WIlr5xW1lklFg//sOlo2hmQjNTPNcPMgHxwWiuN/oZZJDjELHuMViVQ68AEarYqgVr1PlZsjt+vjysJ1DKbtjFUrKwbWYAU2B/ZZsdUO6u6+7U97B357AEeaCC92yoHQcVC4yTkQUK2KxXqe3ZjinOOY50jZQLsEfHIudAy2rYbg82fpxfXJ8XVSb4WUa9MWuY981Dv2e3y3p79hGK9+36914WV/YTduPcUJ00n773Fe91Dvee0y3vdeu8pTsner/dMo23ey7Kw8uRd+0jcV/Ne8xuwzIUq7p2PRH017P8r9d+vJmzyODE//YT3DD5Nrm8nM8U/bMHABLYJen0w6AC3D5xuilwCVxQuU6R3jZ7RMPmuBRgWEbfojlhJI+v3IvkoJFXgbJ5K0Et8ZM1WKZFZuygF6d9BF7gXwNGTQs8FjrOdaiKmSj+hOffinVAQtPN9+6+YxrgivIQQiYJYVD0hZnKK5SYiRh4iPdkwjXyf1AVZ+Z1L0AgTF3lPQYpXJ69GoagXYs1Nf9JrcvGGobHqRV4TZ4porA09eMj/fWxF6OmvDz1Rzb8KStsKn1bBwV8=
\ No newline at end of file
diff --git a/docs/java/jvm/pictures/jvm垃圾回收/jvm-gc-roots.png b/docs/java/jvm/pictures/jvm垃圾回收/jvm-gc-roots.png
deleted file mode 100644
index cd438b03..00000000
Binary files a/docs/java/jvm/pictures/jvm垃圾回收/jvm-gc-roots.png and /dev/null differ
diff --git a/docs/java/jvm/pictures/jvm垃圾回收/parllel-scavenge收集器.png b/docs/java/jvm/pictures/jvm垃圾回收/parllel-scavenge收集器.png
deleted file mode 100644
index 9979d9a7..00000000
Binary files a/docs/java/jvm/pictures/jvm垃圾回收/parllel-scavenge收集器.png and /dev/null differ
diff --git a/docs/java/jvm/pictures/jvm垃圾回收/rf-hotspot-vm-gc.png b/docs/java/jvm/pictures/jvm垃圾回收/rf-hotspot-vm-gc.png
deleted file mode 100644
index 13826205..00000000
Binary files a/docs/java/jvm/pictures/jvm垃圾回收/rf-hotspot-vm-gc.png and /dev/null differ
diff --git a/docs/java/jvm/pictures/jvm垃圾回收/run-with-PrintGCDetails.png b/docs/java/jvm/pictures/jvm垃圾回收/run-with-PrintGCDetails.png
deleted file mode 100644
index a2c8438d..00000000
Binary files a/docs/java/jvm/pictures/jvm垃圾回收/run-with-PrintGCDetails.png and /dev/null differ
diff --git a/docs/java/jvm/pictures/jvm垃圾回收/标记-清除算法.jpeg b/docs/java/jvm/pictures/jvm垃圾回收/标记-清除算法.jpeg
deleted file mode 100644
index 427d15e1..00000000
Binary files a/docs/java/jvm/pictures/jvm垃圾回收/标记-清除算法.jpeg and /dev/null differ
diff --git a/docs/java/jvm/pictures/lifecycle-of-a-class.drawio b/docs/java/jvm/pictures/lifecycle-of-a-class.drawio
deleted file mode 100644
index 857731e4..00000000
--- a/docs/java/jvm/pictures/lifecycle-of-a-class.drawio
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/docs/java/jvm/pictures/memory-area/access-location-of-object-handle-direct-pointer.drawio b/docs/java/jvm/pictures/memory-area/access-location-of-object-handle-direct-pointer.drawio
deleted file mode 100644
index 56d07d90..00000000
--- a/docs/java/jvm/pictures/memory-area/access-location-of-object-handle-direct-pointer.drawio
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file
diff --git a/docs/java/jvm/pictures/memory-area/access-location-of-object-handle.drawio b/docs/java/jvm/pictures/memory-area/access-location-of-object-handle.drawio
deleted file mode 100644
index e248e297..00000000
--- a/docs/java/jvm/pictures/memory-area/access-location-of-object-handle.drawio
+++ /dev/null
@@ -1 +0,0 @@
-7Vvbcts2EP0azLQP9vAu8lEXOmmTTmfqzLR56kAkJDKhCAWELKlf3wUISqQIXWJLohI78dgAFgDJPXsWwC6J7OFs9Y7hefIHjUmGLCNeIXuELMs0DQ/+iJZ12RIEvbJhytJYddo2PKb/EdVoqNZFGpOi0ZFTmvF03myMaJ6TiDfaMGN02ew2oVnzqnM8Ja2Gxwhn7da/05gn1XN5wVbwnqTTpLq05zqlZIar3upRigTHdFlrskNkDxmlvCzNVkOSCe1ViinHPeyRbu6MkZyfMqAY+f33c2+WFovRb/8W3pcPJL1TszzhbKGeWN0sX1cqgPueiyLHY9E0SPgsg6oJxWWScvI4x5GQL8ECoK3gmHEFpAF1QIbjNCdMjYloluF5kcrJyh5JmsUf8ZoueHWZqjZgdJHHJFZjJzCXmtr0RD3NsiHNKJN3aseY+JNI3gOjX0lN4kU+GU9A0lZapQHCOFnVmpQS3xE6I5ytoYuSbmxTmbTlqPqyZiCGaktqtgHGrwxTGeV0M/cWNigo5L4DRet0FOHReYqzv4AsOJ+eAmgbsJjR+SfMpoSrhjlNc05Y+ARaLVRbHZuc5uJCnM6VMCOTauyYck5nqsKUtjaTSk25A/gBhQ6Nexe58DRDqJvbOvyI7owPaQ7Qg7WJOQgu+JIUXIv6QTIcN4VjUDvWhZC2NUh7GVfcaEDufVvQSnBXSNb0oYPpzldbIZSm4q9QmZoI7qucq5Sc1ZKkk8ZbS6Kg60kmvWKSxjHJz2E4J6Jt3T7azhuvD/K6vh64l+D5ugnwUUOwL2QIbssQigT08uNx85mIOScj1hlE3htXb4KrvtsxV3stQ4jpQgD3WsjqnQxZZxj5b2S9CbKalt8xW4OWJQCN8OtZWf2TIesMouq8/cbWrtnaM09k66UORGY7XhUlmL0atm6ocMOHVvMtGnUbdLVMu+PF1WyHq+7lv9dD2DNGmS6G0luY6UYI63pdE7YdaGJkQuBBo9dzfjV/gGiTqQs3lfH7Yo5zbSIgKnUpkgBsOv5FMAKK1Z9fpYIMmS2Y4FmarcuuCcmeCE8jXJNvswmgzlVdUF5USHLKZjiryZZKL0LoGGWg3sgIB+bfwT1HaT5tjwQA+F2axxIxIdxcT0qArXkxgf7VSGklAhjK4uasm4FjHH2dyrzi3Y5GLMcvlWE5gSq4Si+7+RIUugh8iG+gMEC+jfq+aPEfUODLlp4ohz7qm0K0zayU4OzJrIhH2sOYGqFqVm0JLeIsnQJdRhERTlRr5t+f4zSUI6g8k6HJcZoag3eNSxl8O6zW0l8zWXxMjc3c8WQysSJt7jj2xp7rnUevdnA8d+y6utyxcTHF6mJhjZTipFThlgRbl1DjxfHM48ZXtMh0zHOdPBFwsG8g39vLuNNSnLdDRG/3ZQO3cyK2I2YvI+IZtOTsaMnWuCtLpyXTupSaLF3Q6hm0eh5DTE+X5FdLVN9FoYeCB+Q7ogDLGHDmyoSR+7FLEMbxdkzBPJEw9sUsQfOOlQDCR3AoEQ7rAQ0CsVcQQJiyJURBiEIHDULkDyRYruzsIX8kpGEPBX0Fnz8Uuw3YcwSWmPNla+KR96tc4seObo30rbHtnWmNdKzm3sPWvV/lXxVBTUTrEII9URhIugU3huBV3pBrIeh3jqDuvamOF62esbO0B+3M9bUXLV0k6AYWrbZD/LkWrZ67u3/RvMRw3UWrHQh6oWPaPW4Rb89xqxeMDf1rfC8+bjlB58cta3/g5hLHrfOctTSkhBXNk6se/LbF6iYWxCEa9H/ao5d76k7yYkcvS3NUf+YGEoYMxWZDMxxGPcgCdDaFVHUOfoK9Zc/o3e/sTXQH6molvoqrtTUnxWduKjeobjp3BOZVtpm7GyhPF6S8LpR2S60knpJHVaWMJ3RKc5yF29baJy4yEbLp85HKZIdQ9xfC+VrpGy84bYIBGmTrf9R4WfksKvduVR2t6sLRGrXSI9bBBbegCxaRA89dbQ54ldU7ZutCKwchZiTDPH0ijfs4P15OF3idUe/miXqvVo5b0btmEyT2D+D1htJnDVHQU9GqQU/5rKD/O37C78QHgdVmYsxecq4AJzlCgXSt/QEKgrL3F7iI/OrwPsr37U5qYDY9nEpAaTKXrR2K8HOwp8v6SjBL41jal871Nm0uw2OSDTZprN2L7/pmqNc88ED+l3NygJrmatLiK+FRgvZ9QvPd3nlzwD/knXVBAPMM3nn5J/uc9HPrffjYe0g+5N8+uIsqH/9jOGctX5/nJap89lEvUYb2z+8UoLr9zFXKal8L2+H/
\ No newline at end of file
diff --git a/docs/java/jvm/pictures/memory-area/java-runtime-data-areas-jdk1.7.drawio b/docs/java/jvm/pictures/memory-area/java-runtime-data-areas-jdk1.7.drawio
deleted file mode 100644
index bba331b3..00000000
--- a/docs/java/jvm/pictures/memory-area/java-runtime-data-areas-jdk1.7.drawio
+++ /dev/null
@@ -1 +0,0 @@
-7Vtbc5s4FP41mtl9aAZxEeIRHLu3aTdNtu2+EhA2G4xSkHPpr19JCJuLnNqJsZ2uncwYjmQJzvn4dC4CWKP5w9sivJ19ojHJgGnED8A6B6YJoYH4l5A8VhLPcyvBtEhj1WkluEp/EiU0lHSRxqRsdWSUZiy9bQsjmuckYi1ZWBT0vt0toVl71ttwSnqCqyjM+tLvacxmlRSb7kr+jqTTWT0zRF7VMg/rzupOylkY0/uGyBoDa1RQyqqj+cOIZEJ5tV6q303WtC4vrCA52+QHl+63HEP7ffLXzfhb/v7emCfJGzXKXZgt1A2ri2WPtQYKushjIgYxgBXcz1JGrm7DSLTec5tz2YzNM34G+WHJCnqz1JQlJPVti19HdJ5Gqus0C8tSycsbwqKZOunfWH2VpGDkoSFSN/qW0DlhxSPvUrdipfTHGk3q/H5lQ8dWslnDfo6jhKHCzXQ59kq1/EBpdwtNm4NrOkmzbEQzWsjRLAJjh7jLno0WD7lWiA5lG9Po2MZxeraxscY2cDDbWPu2TeKIP51tkPyIX9CcNeTV51hsZqH+82TqnifTHcpmdt9mYwf4BsB8xUEZnz+4Llo2RD8WgmulZt+UcqXxeQeumgeppbqdH03F9zvC7TosDuKQ4CTS4iDC5DrZ1N7iltTaaS7P1UXDIfBgtvFgavgV6p5hNBQcPA0cMPA84PlgjAAOgDcRB94IBFIikIK3QwpEa5Dy7RNvvWJhdLOjAV8f7CDaB+xgG3a2BnZLaO4FdvUFtXDnAh8LxHE+4ljDE4FEfwx8KAHIhYZo4tj0dwXAehjR/0UDXRR0WoRz3mXEEceIuKxLMk1LeVhNwhVVzdOe+wT5QSBvOC3ILx3Uw0FeEzNUxOqPJK5HEuBcgkDgiYPAEqjfMed+Dll6R3iPT4TNaHwi4IMQsNv33feMxr3HVa/Nd7edo/PdoSbgOnlrvxtZ2OjovDVd0Hjy1k6Q3x3XHp235py8tf8tGrsEfHhvDWm8NQWB57KjCTkq+pDgLB5MgGdIOocAjyTIXRCgBq9zV+NckD1/EHDlajjC8/AmH84/wjP8Cw7l4uu1EOQ2Yjqc1ejJaU46UFOiMEunOT+NiKR0KxAWT6Mw81XDPI1jMY0W2G3ot3BZYxF2MNrNHu4ah5bjnrV5EZqafCFyND7oYEh0fx03kDz2RQlR2EKoTiisadAn9dbS/FolkrhVfuyrsFmw0tWrlKwgWcWwzcF1SlMzXNBUPl3KQqhTL1vGefUQJV0UEVG/MhtFxs5AbodyoN0ZiIXFlLDeQNKGy9t+gVnxyawNs3qdBaBL7Bub1e3EkN6ezapJ7/fWDe7JcwbnpN906TEneu7J26LJPzH3lszde5wtDW8butzBYGV0TcJ9EyTwAxdgqHxf7J2QsCUSugyAD44E3d6VLQNrr+06GtHStV8JLYN/kmR9GP8E7v74e1aQMP5Tj7Y1zuUJhGvTzx06slA/oIG6gGY4EOrSzycQ/s4gdOotjccDQt3+pWekGDcAVyNf81QsvBmofoedhUizDmp3FtYo2b31NUntQ1NQlXsJVhR0UdCIlOWJg3aDQsvyOhkVS5dRwdY+WejJGG0DEOJ12V2OIo6lwJb5ujHwHRnYIRHbiS1/58DDT+HqhbNvl6JeN8x5Wojt6SIBPqdC2xuEH8efxcZg+Cy209lzgDzjTLPi6tIotv1yrN9dx29mNw/fP07Yl9v8h5ddlaZu27ymqNIH6VEy2labRzfLf23BZPX7IMq6rmFqrIvRMET2z+eI4CAYf7lNr5wfX+/Q49dYa1yZSBLGtUEwEmUEIZmAgB9MpMT/EN6Fb8XLKruqaQk/nqMGykU0EAXoeqp/+VTyvZizKD9STGXhNcmCMLqZSnl3ck0hrMFHgfyTY7KQpTTX+XK7BqJrdUq3ugXV1ZBMN1W+swVVU7l9fSvEfuqcneoS0nGIqctOQWsot1xTX9JU2eu643ac4a3hjGVx3ecB/5Eyw7b+M/Q0CIqlN1UxQ0kXwsS79zsctEnVUlO0hIPVz58sn28AHGfrUrkDAiz+xx7ArtwdhURBxTf6qYDLRc7SudjkMaJ5yUIZe15Qmh3A2U2SxIy0VBaja+Qc7OU3u1totTWQQriPqWe8+8ZPV2+XVpW41Tu61vg/
\ No newline at end of file
diff --git a/docs/java/jvm/pictures/memory-area/java-runtime-data-areas-jdk1.8.drawio b/docs/java/jvm/pictures/memory-area/java-runtime-data-areas-jdk1.8.drawio
deleted file mode 100644
index 782ad1b6..00000000
--- a/docs/java/jvm/pictures/memory-area/java-runtime-data-areas-jdk1.8.drawio
+++ /dev/null
@@ -1 +0,0 @@
-7Vxdc5s4FP01mtl9aAbxIcQjOHY/drObSTrdmX3pYJBtGoyygBtnf/1KQtgGrl27MY63tdNJ8UVIcM/hcHWvCLIG8+XbPHyc3fCYpcg04iWyrpFpmq4nfkvDc2XwPLcyTPMkrkx4bbhP/mXaaGjrIolZ0WhYcp6WyWPTGPEsY1HZsIV5zp+azSY8bY76GE5Zx3AfhWnX+lcSl7PKSk13bX/HkumsHhkTfcHzsG6sr6SYhTF/2jBZQ2QNcs7Lamu+HLBU+q72S3XcaMve1YnlLCv3OeC9Yd98/vjn6G45iB8nfwd3lH9+o3v5GqYLfcH6ZMvn2gM5X2Qxk50YyAqeZknJ7h/DSO59EpAL26ycp+IbFptFmfOHlacsaakvWx4d8XkS6abTNCwKbS8eWBnN9Bd9Siwv2XLrteKVBwXzGJ+zMn8WTfQBnuFUhzzXbHKvtOVpjaJja2hmGwg6jjaGmjnTVe9r54oN7d8DfG327utJkqYDnvJc9WYxHDvMXbXc2OMR1wrJq6FjttAhJoCOTQF0cG/oWKdGZ+LIHwgdoj7yCJ6VG/bqcy6oWQS6p0zonjLdvlCzu6gNHeQbiBJkklSMH4zzBorkn4VUXOXbN4V63viigfDEUvmp3i+2pvL/d0wg2y8T4pDRSQQyIaJsPNkXcXlJ+glqrr7rk8Z9MMJuMsIEVRZD9zHpixAOQAiKPA95PhoSRAPkjeSGN0CBskiu0MO4gskWrny6EXvvyzB6OFKH/z/iYXIK4llN4tkg8VaR10mIRwDiucinknJCkgTZ6EhS0R8iHysGCqMhdwly+sdiYN2NbP+ijm5zPs3DuWgyEJQrmTytOzZNCrVZDSL8VI3THPvC+X44bzQ47zivz3kX4LySVn+giD1QDBcWggJPbgSWpP2RVfePsEy+MtHihpUzHl8k+FUkmEIx/GnpSC8h/G7QMHbPMIb3LiHbj68XGNPzi9nqJOMlaLuwvi/Wn1/UhoGk7yVs+2kIeX5xG4Yy45oF36uRJhbE6LJCaHkwQp6hRB0jOlA8d1FANtRdxBzXUvLFvUCrmMORIYg3+nD9G76i31BSYR5vZaFAroSoVhMo4xlrsU2bwjSZZuJrxJSwW4HkQRKFqa93zJM4lsOA3G6yv0HNmo64RdN2NvHoVDTW1KsLASaYQCQOEI72RsY9CgEsi31ZW5RwSO9Jn21iutN1DedXXbO4U4T8phc361hQGUvbcpZWOrvZPeQ0PcItT9QNVoNktyppJl5BVPdS8EUeMX2guVGA7PTV0h5sd/oqw3zKyk5fCsnVxb8AXKBe8DODi1sPA/ICcL3W1NI7ObhA7r/zGBHhvRB08QzYjPMFLwMR3ttyl38R8kOFvHNfW6CMG1BWoTcZB/Lx+5BBbLiIYh0QU+9ChkPJ0NYBegZkABLVh865vWY8aUSrkH9ttAzxmUy2z/B3UO+Xj7OchfGvMOG2RJwXHm7NT7c0yXKheQ6G5jn90RBKUF9o+CPTEJsWPj8eAhn370lB7sGvjWTOrlnyfrz6EVYiEvBxCK5EJE5P+JtA2vu1dajKywRrHbrNecSK4iJERxIig9itbIsFZ1uodUIpMoFc9Joce/CQbsv/CiIJOgW2SucNke+oiR6Rcz25QvAaeXQXtV44+mFJ7G3dXCe5XNMuU+RzLr29x1zk/PPcFJ0gz2221icQj3apDuVWbLsvqgNZbqDs0iXpWYraQWtNgazYC6sYtTM1um5dyd1Al5JT6hiQNa4SSxJcGwUDWWWQlhEKxMZIWfwP4dfwrXzD5VhVLxnPC9Zg9RwNZJW6HuqLGEq9THMVZWfKqTQcszQIo4epsrcHB0plG3oUqB/VZxmWCc+ggO7oRLRJq74LEBG7gMxYnezo8bi4R5L7/J8Sp6mGek34VlBt1kKhVBW2ekMPWsHercXXpcnDdMPbohurErwvJv9nqg6HhtFilttlUKwiqkodCr6QGPcQe1C8X2ETqGvi3qrs5s6M+B7kcQ6uqDsooPLf0EPUVUupiCy0+EY3L3C3yMpkLpeDDHhWlKGaht5ynr5C0DuZTMwIlLOYjInzau/NYbNdjLXhejnt8qq/txqhReAq8hETSRmFeGoFhac4YR8pzhF6FRYK4MtqoRO+4HXSSdSd+ymj2H4/+fNh+Cl7/2TMJxNYxFrY1c+Y32U4ecuLROv9mJclnwMPoZK3AZ2Fj7Kz+XIqX2q/GodFEl0tAaWgEYOVYkwd22mIAIbjzw4aAGa7FKEVwBBADzwogLF7E4Q9luF/c43FwW7+spg/6luDdG5JsgcOZ7xMo1NDML53kYaB3SvDsdaf1u3tHG3Jhvi6/tMGVfP134ewhv8B
\ No newline at end of file
diff --git a/docs/java/jvm/pictures/memory-area/local-variables-table.drawio b/docs/java/jvm/pictures/memory-area/local-variables-table.drawio
deleted file mode 100644
index 1685a00c..00000000
--- a/docs/java/jvm/pictures/memory-area/local-variables-table.drawio
+++ /dev/null
@@ -1 +0,0 @@
-7Vpbb5swFP41SNtDKi6BkMc0TbtLp0ntpGmPDhiwajA1zm2/fsdgApSkTbuyZAoREvY5vp7vfDb2iWZN4/UNR2n0jfmYaqburzXrSjNNw9AdeEnJppCMx6NCEHLiq0KV4J78xkqoK+mC+DhrFBSMUUHSptBjSYI90ZAhztmqWSxgtNlrikLcEtx7iLalP4kvonJezrhSfMIkjMquHXtYaGJUllZTySLks1VNZM00a8oZE0UqXk8xldYrDVPUu96j3Y6M40QcUkF/3Axu7izv++3V4OviV/YZkXRgmEUzS0QXaspqtGJT2gAGnsqkQHMpuoxETCFrQHIVEYHvU+RJ/QpcAGSZQFwoJHXIAzQCkQRzVcdjlKI0I3ljRYmIUP8WbdhClN2UuUvOFomPfVU3gLZU04Yj84TSKaOM5yO1fITdwMvHwNkDrmkcz8XzADRqupgLvN5rSGMLDzg2ZjEWfANFVIWtcyqfNocqv6p5iK5kUc05wPuVZyqvDLdtV7hBQkH3Ghjtw2GEiQqC6B3QBSXhIYi2EfM5S38gHmKhBCkjicB8tgQbZkpWBydhiexIsFQpKQ7KunMmBItVhitzbRvNTWVfwgMWneoXtmbDbKaQN6o8PLI4F1OWAPbgbrINjDKxwpk4FPZnGNJ2hpfAHppdYe3swNqhQtGjAbrzuGClYpDlxJlAAcNO15USUqF8S6OphmBgRVuF5l19KV+oUeVLDFAJaL4yRsT3cfIervMXeNunhveo5/az3K5vCnYnXN80IX7RFayuXMFtuUIWgWX+P36+I2ajN/K1M5DGPV9Pg6+ufWS+lp/+NVfw2UJCd86EHZ8YYcuR94Q9NmEN0z02Y9vnYaASOusddt9x+HggWT1hT4SwI+NAwnZ1OjKHLV/wIsTPmq/WG/naGUb97dSJ8NU0rGNvsO3bq4v8d9aMfeudU2co9XdOp8JY2zk2Y9uXThwHGKblnfU51jy1iydrf2AgS1GyMzDgFbaUQQEezj9ISkCyfH3MDaTn0YMAxYRuiqIRpkssiIdq+iq6ALZb1xVFp1KTMB4jWtOtlF2kcqgXF/c6xQKoP4AxeyQJ2zUBKTEgiZ/DI5Xb/nIN0DXJAihf1sy9RALDuN9sdVtxjryHMA81Dp5YxBy6hTHM4VglbGWXp/GTL2iJtJmjTXTNdWuRlML4ZSSlEM95D0fHcPS+/y+NPbM12EBdXZuNNdfSJq6UuNfa2M0lI5meudrEkKp93Hiymcgp7dktaptJbUU3pRURJSFsFVcell8Qhy7xL4T8dXWEKc+97o6Qv7Fjsbf1Vy/2kK3+FJLrav+tsWZ/AA==
\ No newline at end of file
diff --git a/docs/java/jvm/pictures/memory-area/method-area-implementation.drawio b/docs/java/jvm/pictures/memory-area/method-area-implementation.drawio
deleted file mode 100644
index af3bd448..00000000
--- a/docs/java/jvm/pictures/memory-area/method-area-implementation.drawio
+++ /dev/null
@@ -1 +0,0 @@
-7Zhdb9owFIZ/jS875TvxZZymTFM3rULTrk1ikpQQ02AI9NfPdhycQOjKVtRNqrjAfn38cc55OE4AdrTcTWq8yr/SlJTAMtIdsG+BZZmm4fEvoexbBUK/FbK6SJWRFqbFM1GiodRNkZL1wJBRWrJiNRQTWlUkYQMN1zVthmZzWg53XeGMnAjTBJen6s8iZXmrBpav9c+kyPJuZ9OD7cgSd8bKk3WOU9r0JDsGdlRTytrWcheRUgSvi0s77+7M6OFgNanYayZs2OM2SZunBjWOtcDZw/PUunHU2di+c5ik3H/VpTXLaUYrXMZaRTXdVCkRqxq8p23uKV1x0eTiI2Fsr5KJN4xyKWfLUo2uF4QluZp/6obybE03dUJeOLvd2okD9yYq5yeELgmr99ygJiVmxXaYUKy4yA52h6nfacGPYhmKYctQCVQEO44xXILhOiNMzdIJ4I3eMbQk03JBityPFP0uRY75vilSbm5xuVEunORMZ0SEt8kLRqYrLIPX8Mo5jP68KMuIlrSWc+35nHhJIrLCarogvZHUhzPDeHW+tqRmZPdiJrpR6Awiavkqoo0ugpapanveK4C+cT55g7BfGmNzJMZeyUS0qGRBB9t72tBu4GYtEQ+5AQ/JTg/yVia/Yw9ADyAoGsgG0AWxC4IIoLDbYFZr4zuAIhAEwjgIAboFcQCQCUJTKCEXLTEdcTNX+MtHQx8EjmjwNQO7WwF2i3Or1gG1wzE4PGHs6Lc5oKCiFTlCRkm4LLKKdxOOAeE6Eukv+NUWqoFlkaayXIzhOCwh4oiqWFjuFXjrbs0ON3iKm9Oh1cfNuhZu3lnc1itc/R1uyACIE+QI6AJXNhAI7R4R7R4dEZrCP971jc5+oN8VB0e+PPstgLZQwhjAGMQc91i4OAL60K03rJApJsF8tEJ6SUBm82tUSOvMndND1vRGkL1ahQyuhqzMtqhdPgihKIwxBPw5HjkfyP5PyNr2OyJLkgw+zic/zMn+GwrvQwuvH8Yu9TZPYSTzFAnMhHInMyfTA8MveIsn4r3wMs5MjxMi0TiBxJdImBJwBCA8bPXIt5KvoJ+S6h+9mks8IyXCySKT+vHm+uLmj2ttv8cakh+5JuNP4LRSiw7QO7y5ag5PoBtB8yyHzlHptN0RDsdue8f/5F5MIu/ql+z2iV//VWHHvwA=
\ No newline at end of file
diff --git a/docs/java/jvm/pictures/memory-area/method-area-jdk1.6.drawio b/docs/java/jvm/pictures/memory-area/method-area-jdk1.6.drawio
deleted file mode 100644
index 35e0b65b..00000000
--- a/docs/java/jvm/pictures/memory-area/method-area-jdk1.6.drawio
+++ /dev/null
@@ -1 +0,0 @@
-7Vltb5w4EP41lq4fEgHmxXyEzSZ3OZ10p5zU3n2pvOBlaQzeAye76a8/2xiWFzdKU9imUhMpwTPgl+eZGY/HAK6K402F97s/WEoocKz0COAVcBzkeOKvFDw1gtDVgqzK00ZknwR3+WeihZaWPuQpqQcvcsYoz/dDYcLKkiR8IMNVxQ7D17aMDkfd44xMBHcJplPp+zzlOy21/fCk+JXk2a4d2vfcRrPByX1WsYdSD1iykjSaArf96EXWO5yyQ08E1wCuKsZ481QcV4RKWFvImu+uv6Dt5lyRkr/kg03ooL94Xe7RP671wK/rKC0udC+PmD5oLPRk+VMLjlodkZ3YAMaHXc7J3R4nUnsQ1iBkO15Qra7vCU/kui3R2LKSa7JtX7Qziuta6zo0ZCPF9a4bYZtTumKUVaKt4ITxdKntvEnFybEn0ku/IawgvHoSrxyHpqYttGPlcOLb87Vs16PabV/E2sayrusT1uJBw/0V0DvnhP4MCPtjiOEUYtszQWwvBTGcQrwOQXgFwhCsfYAsgGyw9gC6BiGSKhTI52+ioQ8ucOAWJSRJJD28YvdkBPuznM3AydjsPTe49KasOJ20z4u/FC2uwfJ9yiUee1wOsPf/e5DxMU4a3CKhrLLNL55YthjbOv1/pwCzJIYXtQJRvmv7+6NStP2Ip0z9F6xHwg4CsA5AtAKRD9YuiBGIHamSDz2DELYS2yCy2mmKVTcz1Z3NaTCpR1Dqfi+Dgagzhc5k0GVgsBnomGzG6z6f3Wq8mePlGHdM0PZ1jvrFfW0ODw6HdEB/GlUdU1RFS3mvbwiqwl1ECLXkQ2QDtJIeI3wr9p91phF7AhE+2tJMVBh2L0zzrBTNROBMhDyW+OYiv4u0osjTVA5jtImh1YzJHTC/KNNoGKthaGAaGZheLEMJJkzf/va3ipMxiKCKnM0OKphegRC2QRXNu4Nut84rd9Al6YIv2lmhga/F9lW0bIQkttibgrdOBLReGCCX85vQECEDGfRilXeEa4Bi5UbXMlrKRFTEw5nTTk/+voor2e711PwszGEw4tBwOjMfHZaisM2bBxx2KaMPojWIvZ8cPsch+u4cGoobMi8R+Yc6/sUQiOSqSVmimfesH5o61zfsZOelblocuVQ/P0jSuGNV/lnIMG0ZM2WR9gJU2s6IS0MVxj1nEmmbijBTL/TkqSGOwPpa5pII/Umq4oaUbTt8+8Q75+XZHfLcpTg9nrtU6DxEf3tZR0zNago6vad3wLF6xZ0tLnL61HwjOsLFXikhlDWTHaGPRHI50Qw7OVWIHG9/HOmaWUplyaoC06H6oLGUereZp1JSwoU1XYilJnmZGb+XJnuhrU+qtQEO1LkwrlJ3b/WmppS8wmW9FZ223cvLBv3CgVXpcPT+52le7ynWsOUlzXtfbinDvN/juFh2e/W7fem/tPilHfNrqtVDn5rjTNDe3DyNdq/+jmYbvAMu5h2G8pVMKMUB2v8Z20Y3Cd6w5mWKbaa7mjlC2+rTh+zfq4+Px/dpeKD3h+yjuzHdkskNy5OVY3kGWKlTgbpHiAO9ZYXRLX7EN/Jms/WcTWUMgi+vWYtDpDiAqIJLFKtLDD3UJzGUukS9TMo3aE3SLijeEBp316XjwZ/PgmP1q/rkmOesNKVVsxcW4LgW7nrGIk9gSo1fUwgXzdN9sNL17tvh+n8=
\ No newline at end of file
diff --git a/docs/java/jvm/pictures/memory-area/method-area-jdk1.7.drawio b/docs/java/jvm/pictures/memory-area/method-area-jdk1.7.drawio
deleted file mode 100644
index 3e9cd9a2..00000000
--- a/docs/java/jvm/pictures/memory-area/method-area-jdk1.7.drawio
+++ /dev/null
@@ -1 +0,0 @@
-7Vltb9s2EP41BNYPMUS9Uh8lx86WYcCGDOi2LwUt0bIaSvIkJnb660dSlCzKbJamkpsCTYBEvJP48jx3x+MROMvieFPj/e63KiUU2FZ6BM41sG1ke/yvEDy1gtBVgqzO01YET4K7/BNRQktJH/KUNNqLrKooy/e6MKnKkiRMk+G6rg76a9uK6qPucUbOBHcJpufS93nKdkoK/fCk+Jnk2a4b2vfcVrPByX1WVw+lGrCsStJqCtz1oxbZ7HBaHQYiZwWcZV1VrH0qjktCBawdZO13689o+znXpGQv+WAT2ugP1pR79LdrPbB1E6XFlerlEdMHhYWaLHvqwJGrI6ITCJz4sMsZudvjRGgP3Bq4bMcKqtTNPWGJWLfFG9uqZIps6PN2RnHTKF2PhmikuNn1I2xzSpcVrWrelnA68flSu3mTmpHjQKSWfkOqgrD6ib9y1E1NWWjPyuHEt+cr2W5AteMqIVY2lvVdn7DmDwruL4DeviT0F0DYH0PsnEMMPRPEzlwQO+cQr0IQXoMwBCsfIAsgCFYeQGsQIqFCgXj+KhqG4ALb2aKEJImgh9XVPRnB/ixnU3Biw0UXnBUtDjTQYgcL75wYfy5eXIPp+5QJQPa41MD3/30QATJOWuAirqyzzU8eXzcf2zr9fycRswSIV41EUbwL/f1RKrp++FMm/3PaI24IAVgFIFqCyAcrF8QIxLZQiYeBRXBjiSGIrG6afNXtTFVnU1pM6hGUut/MYiBaBLrFuPBkREOjcWyT0Xi9KU1uNt7EEXMMPCZo+zpX/ezONgEjdvj/Dmyb4iqay319Q1jl/sKDqCUeIgjQUrgMd67Yf9abRuxxRNhoUzNRYdi/MM2zkjcTjjPh8ljgm/MML1KKIk9TMYzRJnSrGZOrMT8r00jfQfvcY8g0MjBtz8V0cMb07S9/ykAZg8iRobPdQznTSxA6XVRF0+6h2639yj10TrocN9TjpIEu6Bjomm1fRfMGSAL53hS8PR5GXmO9MD7O5zahIUAGIubFMu8IVwDF0ovWIliKTJSHw4nzTk/8voor0R701P7MzGEw4tBwPDOeHWY7nXWbrMZhnzL6IFqB2PvB4XMcom/OoaG6IdISnn7I81/sAJ5btRlLNPGW9V1T5/qGdP+y1J1XRxby5zvJGXdVnX/iMkw7xkxJJJyBSmiPuDSUYdxL5pDQVIU590JPHBriCKzWIpVE6HdSFzek7Nrh2yfevizPrs5zn+IMeO5TocsQ/fVlHT41qy3oDJ7eAdsaFHe2uMjpU/sN7wgXghTV3Y7QRyKoHCv0Lk71IdvbH0e6do5CWVZ1gamuPigkhd5tZymVlDBuS1d8oUleZsbvhcFeKdsTamV+mjrnplWq7q3B1KSS1bhstrzTrntx16BeOFR1qo8+/DzNmz3FCrS8pPngyy2tMBv2OC6V3V7/ChfBS0tfyi2/pFite9QUJwJfP5lBg29AaPCN2SrR0FC7EukkPz37PyLbqATp6QUvU2QzXdVMEdiWH//K/rn+8Hh8n4YHen/IPrgb0yWZ2K48UTcWJ4ClPBPIa4Q4UBtWGN3iR3wjLjY7z9nUxhD48oo1P0Ly44estkSxvMNQQ33kQ8k71EVSvkFrEnZB8YbQuL8tHQ/+fA4cy1/ZJ8Msr0pTUjV5WWFUBrdN5Z3AlBS/pgLOm6erYKkbXLU7q/8A
\ No newline at end of file
diff --git a/docs/java/jvm/pictures/memory-area/stack.drawio b/docs/java/jvm/pictures/memory-area/stack.drawio
deleted file mode 100644
index 00ce324a..00000000
--- a/docs/java/jvm/pictures/memory-area/stack.drawio
+++ /dev/null
@@ -1 +0,0 @@
-3Vhbk9ogGP01PO5OEsyFxyRmt9OZPnScaaePmGBMxWAJrm5/fYEQYxRX29F1uvogHJDLOd8hHwEwXW6fOV7Nv7CCUOA5xRbAMfA813UC+aOQ1xZBKGyBkleF6dQDk+o3MaBj0HVVkGbQUTBGRbUagjmra5KLAYY5Z5thtxmjw1lXuCRHwCTH9Bj9XhVi3qKRF/b4J1KV825mN0BtyxJ3nc1Omjku2GYPghmAKWdMtKXlNiVUkdfx0v7v6UTrbmGc1OKSP2RfF98m+EdTLwlfL0Z0Opn+eDCjvGC6Nhs2ixWvHQOcreuCqEFcAJPNvBJkssK5at1IzSU2F0tqmpsFEbnatyMrM1YLo6in6jsGVKWkuGlM+Xgr3boIF2S7B5mtPRO2JIK/yi5da2RoNnHmIlPf9Kp5XZ/5nmK+b0BsIqXcjd2TKQuGz7/gFh5zmwUgdkAUHZEsdykOmBScLUjKKOMSqVlNFKMVpQcQplVZy2ouuSMSTxRnlQzg2DQsq6JQ01il68U9FMw/VPMGIu1cfk4k71Yaja4c//sCAQ8WmESz/EhN2RLkEZnOzjnmCpzvuOs4Dy2cOxbOoXsr0oM3jJH5IIlAHP4HDvHewyHRvR0SWsSSGrlAriJDIIIg1qpFTwBFGglVOZMiuqrpmnaazUiQW+1UhGjqOO9hp5E/EAhajjDXtz1nbiVQZHUTgiAag2wEkjFAqUakas7pJ9BH08VinPfVBVmNE8XaL4GyT+Qqv0ilkkwjGYj9j67LqKvfTZfOsIeGCUCCVCGByiry/ErkiTZSmqEEoEwXUm0hWRiDLr4+rlT+3Y8213Y9CajKA5oVrgfsB7/W6ialiXloNDOx7OB5q23fKEul/rXkG+24cp3t0KbjB88GA//CbPAaGnsn1Syql57xfYFb7FF/Tkq0gwfDnM0fu7yQkpl4KyvkRIYTnuqBlAwrVtVC0+AnwB+rkdaCtSHXyn6QJHImsKiYGhQ5erec5AZo2FrxfvVE0kNDMwfOsdA2L8Obedl2HZbPQx/Eqc5TUoBCk0gmsvCkkfgzfsHP6h1QJ/OUX2J7N7DbPtT5kKsKsTzVUdv7p5xEv2h6zOsLAuceFw+Kp4QmOF+UGj+cvI84NzD1veMl0d9hJD7Ao2fKFcIOOs7ZsHNt95d/uGzKav/2TLftvYOE2R8=
\ No newline at end of file
diff --git a/docs/java/jvm/pictures/memory-area/《深入理解虚拟机》第三版的第2章-虚拟机栈.png b/docs/java/jvm/pictures/memory-area/《深入理解虚拟机》第三版的第2章-虚拟机栈.png
deleted file mode 100644
index bd682792..00000000
Binary files a/docs/java/jvm/pictures/memory-area/《深入理解虚拟机》第三版的第2章-虚拟机栈.png and /dev/null differ
diff --git a/docs/java/jvm/pictures/tomcat-class-loader-parents-delegation-model.drawio b/docs/java/jvm/pictures/tomcat-class-loader-parents-delegation-model.drawio
deleted file mode 100644
index 4aa9e37b..00000000
--- a/docs/java/jvm/pictures/tomcat-class-loader-parents-delegation-model.drawio
+++ /dev/null
@@ -1 +0,0 @@
-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
\ No newline at end of file