diff --git a/notes/Java 虚拟机.md b/notes/Java 虚拟机.md
index 6fc0432f..cf9a8bbc 100644
--- a/notes/Java 虚拟机.md
+++ b/notes/Java 虚拟机.md
@@ -154,7 +154,7 @@ Object obj = new Object();
用来描述一些还有用但是并非必需的对象。
-在系统将要发生内存溢出异常之前,将会对这些对象列进回收范围之中进行第二次回收。
+在系统将要发生内存溢出异常之前,会将这些对象列进回收范围之中进行第二次回收。
软引用主要用来实现类似缓存的功能,在内存足够的情况下直接通过软引用取值,无需从繁忙的真实来源获取数据,提升速度;当内存不足时,自动删除这部分缓存数据,从真正的来源获取这些数据。
@@ -224,7 +224,13 @@ finalize() 类似 C++ 的析构函数,用来做关闭外部资源等工作。
1. 标记和清除过程效率都不高;
2. 会产生大量碎片,内存碎片过多可能导致无法给大对象分配内存。
-### 2. 复制
+### 2. 标记 - 整理
+
+
+
+让所有存活的对象都向一端移动,然后直接清理掉端边界以外的内存。
+
+### 3. 复制
@@ -234,12 +240,6 @@ finalize() 类似 C++ 的析构函数,用来做关闭外部资源等工作。
现在的商业虚拟机都采用这种收集算法来回收新生代,但是并不是将内存划分为大小相等的两块,而是分为一块较大的 Eden 空间和两块较小的 Survior 空间,每次使用 Eden 空间和其中一块 Survivor。在回收时,将 Eden 和 Survivor 中还存活着的对象一次性复制到另一块 Survivor 空间上,最后清理 Eden 和 使用过的那一块 Survivor。HotSpot 虚拟机的 Eden 和 Survivor 的大小比例默认为 8:1,保证了内存的利用率达到 90 %。如果每次回收有多于 10% 的对象存活,那么一块 Survivor 空间就不够用了,此时需要依赖于老年代进行分配担保,也就是借用老年代的空间。
-### 3. 标记 - 整理
-
-
-
-让所有存活的对象都向一端移动,然后直接清理掉端边界以外的内存。
-
### 4. 分代收集
现在的商业虚拟机采用分代收集算法,它根据对象存活周期将内存划分为几块,不同块采用适当的收集算法。