您的位置:首页 > 编程语言 > Java开发

深入理解JAVA虚拟机笔记 - 04

2015-07-23 21:38 375 查看

垃圾收集器简介

Serial收集器

最基本的,最悠久的

单线程的:该收集器进行垃圾收集时,必须暂停其他所有工作线程,知道它收集结束(引用原话:你妈妈再给你打扫房间的时候,也会让你老老实实的在一边待着。真的是很形象)

缺点:在用户不可见的情况下把用户正常的工作线程停掉,难以接受

优点:简单高效(个人:粗暴)

ParNew

Serial的多线程版本

缺点:单CPU下并不会超过Serial(一个cpu貌似同一时间只能执行一条线程吧)

优点:能和CMS配合,在多CPU环境下,还是不错的

Parallel Scavenge

新生代收集器,采用复制算法,并行多线程收集器

目标:达到可控制的吞吐量(运行用户代码时间/(运行用户代码时间+垃圾收集时间))Ps:停顿时间越短的越适合与用户进行交互的程序;而高吞吐量的因为能够高效的利用CPU时间,适合后台运算并且不需要太多交互的程序

缺点:不能保证停顿时间

优点:虚拟机能根据当前系统运行情况收集性能监控信息,动态调整参数以提供最适合的停顿时间或最大的吞吐量

Serial Old

Serial 的老年代版本,单线程,标记-整理算法,与Parallel Scavenge配合使用

Parallel Old

Parallel Scavenge 的老年代版本,使用标记整理算法

优点:能够与Parallel Scavenge配合,在注重吞吐量以及CPU资源敏感的场合,可以考虑 Parallel Scavenge + Parallel Old 组合进行垃圾回收

CMS收集器

目标获得最短回收停顿时间(应该是用户体验最好的)

标记-清除算法

过程:初始标记–>并发标记–>重新标记–>并发清除

缺点:

对CPU资源非常敏感

无法处理浮动垃圾(CMS并发阶段产生的垃圾)

标记-清除算法可能产生大量内存空间碎片(解决办法:执行N次垃圾收集之后进行一次碎片整理)

G1收集器

面向服务器端

基本过程:初始标记–>并发标记–>最终标记–>筛选回收

特点

并行与并发

分代收集

空间整合(标记整理算法)

可预测的停顿

Ps:由于这部分我不是特别理解只能大概把书上总结下发上来啦,原谅我这个菜鸟吧
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: