Skip to content

Commit 0f850d7

Browse files
committed
分代回收算法
1 parent 34a6af8 commit 0f850d7

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

MD/GarbageCollection.md

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,5 +53,17 @@
5353
![](https://ws3.sinaimg.cn/large/006tNc79gy1fmzavlf4enj30fj08qt9b.jpg)
5454

5555

56+
### 标记整理算法
5657

57-
### 分代回收
58+
复制算法如果在存活对象较多时效率明显会降低,特别是在老年代中并没有多余的内存区域可以提供内存担保。
59+
60+
所以老年代中使用的时候`分配整理算法`,它的原理和`分配清除算法`类似,只是最后一步的清除改为了将存活对象全部移动到一端,然后再将边界之外的内存全部回收。
61+
62+
![](https://ws3.sinaimg.cn/large/006tNc79gy1fmzbq55pfdj30fe08s3yx.jpg)
63+
64+
### 分代回收算法
65+
现代多数的商用 `JVM` 的垃圾收集器都是采用的分代回收算法,和之前所提到的算法并没有新的内容。
66+
67+
只是将 Java 堆分为了新生代和老年代。由于新生代中存活对象较少,所以采用复制算法,简单高效。
68+
69+
而老年代中对象较多,并且没有可以担保的内存区域,所以一般采用标记清除或者是标记整理算法。

0 commit comments

Comments
 (0)