Update Java 虚拟机.md
CMS收集器,“浮动垃圾”部分说法不准确,启用Serial Old收集器并不是因为预留的内存不够存放浮动垃圾,而是预留的内存无法满足用户线程的使用,也就是用户线程创建新对象内存不足。
This commit is contained in:
parent
1392056d73
commit
7a2e7aeb69
@ -351,7 +351,7 @@ CMS(Concurrent Mark Sweep),Mark Sweep 指的是标记 - 清除算法。
|
||||
具有以下缺点:
|
||||
|
||||
- 吞吐量低:低停顿时间是以牺牲吞吐量为代价的,导致 CPU 利用率不够高。
|
||||
- 无法处理浮动垃圾,可能出现 Concurrent Mode Failure。浮动垃圾是指并发清除阶段由于用户线程继续运行而产生的垃圾,这部分垃圾只能到下一次 GC 时才能进行回收。由于浮动垃圾的存在,因此需要预留出一部分内存,意味着 CMS 收集不能像其它收集器那样等待老年代快满的时候再回收。如果预留的内存不够存放浮动垃圾,就会出现 Concurrent Mode Failure,这时虚拟机将临时启用 Serial Old 来替代 CMS。
|
||||
- 无法处理浮动垃圾,可能出现 Concurrent Mode Failure。浮动垃圾是指并发标记和并发清除阶段,由于用户线程继续运行而产生的垃圾,这部分垃圾只能到下一次 GC 时才能进行回收。由于用户线程还在继续运行,因此需要预留出一部分内存提供给用户线程使用,意味着 CMS 收集不能像其它收集器那样等待老年代快满的时候再回收。如果预留的内存无法满足程序分配新对象的需要,就会出现 一次“并发失败”(Concurrent Mode Failure),这时虚拟机将临时启用 Serial Old 来替代 CMS收集老年代的垃圾。
|
||||
- 标记 - 清除算法导致的空间碎片,往往出现老年代空间剩余,但无法找到足够大连续空间来分配当前对象,不得不提前触发一次 Full GC。
|
||||
|
||||
### 7. G1 收集器
|
||||
|
Loading…
x
Reference in New Issue
Block a user