博客
关于我
java虚拟机的垃圾收集器之新生代收集器
阅读量:138 次
发布时间:2019-02-27

本文共 921 字,大约阅读时间需要 3 分钟。

hotspot虚拟机的收集器之新生代收集器

hotspot垃圾收集器主要有七种:如图所示:

这里写图片描述
图中上面部分是新生代的垃圾收集器,下面部分表示老年代的垃圾收集器,两个垃圾收集器的之间的连线表示两个收集器搭配使用。

serial收集器

serial收集器是最基本发展最悠久的收集器。serial收集器是一个单线程的收集器,但他的“单线程”的意义并不仅仅只会使用一个cpu或者一条线程去完成垃圾收集工作,更重要的是在他进行垃圾收集时,必须暂停其他所有的工作线程,直到收集结束。

这里写图片描述
serial/serial Old收集器运行示意图

serial的优点:简单有效(与其他收集器的单线程比),对于限定单个cpu的环境来说,serial收集器由于没有线程交互的开销,专心做垃圾收集自然可以获得最高的单线程的收集效率。serial收集期对于运行在client模式下的虚拟机来说是一个很好的选择。

ParNew收集器

ParNew收集器其实就是serial收集器的多线程版,除了使用对线程进行垃圾回收收集之外,其余包括serial收集器可用的所有控制参数、收集算法、stop the world、对象分配规则、回收策略等都和serial收集器完全一样。

这里写图片描述
ParNew/serial Old 收集器运行示意图

ParNew收集器的优缺点:ParNew收集器在单cpu的环境中绝对不会比serial好,甚至由于存在线程交互的开销,该收集器在通过 实现的两个cpu的环境中都不能百分之百保证超过serial收集器。当然随着cpu的数量增加,他对于GC时系统资源的利用还是很有好处的。

Parallel Scavenge收集器

Parallel Scavenge收集器也是使用复制算法的收集器

Parallel Scavenge的特点:Parallel Scavenge关注与其他收集器不同,CMS等收集器的关注点是尽可能地缩短垃圾收集时用户线程的停顿时间,而Parallel Scavenge收集器的目标则是达到一个可控制的吞吐量,所谓的吞吐量就是CPU用于运行用户代码的时间与CPU总耗时间的比值,即吞吐量 = 运行用户代码时间/(运行用户代码时间+垃圾收集时间)。

你可能感兴趣的文章
multiprocessor(中)
查看>>
mysql CPU使用率过高的一次处理经历
查看>>
Multisim中555定时器使用技巧
查看>>
MySQL CRUD 数据表基础操作实战
查看>>
multisim变压器反馈式_穿过隔离栅供电:认识隔离式直流/ 直流偏置电源
查看>>
mysql csv import meets charset
查看>>
multivariate_normal TypeError: ufunc ‘add‘ output (typecode ‘O‘) could not be coerced to provided……
查看>>
MySQL DBA 数据库优化策略
查看>>
multi_index_container
查看>>
mutiplemap 总结
查看>>
MySQL Error Handling in Stored Procedures---转载
查看>>
MVC 区域功能
查看>>
MySQL FEDERATED 提示
查看>>
mysql generic安装_MySQL 5.6 Generic Binary安装与配置_MySQL
查看>>
Mysql group by
查看>>
MySQL I 有福啦,窗口函数大大提高了取数的效率!
查看>>
mysql id自动增长 初始值 Mysql重置auto_increment初始值
查看>>
MySQL in 太多过慢的 3 种解决方案
查看>>
Mysql Innodb 锁机制
查看>>
MySQL InnoDB中意向锁的作用及原理探
查看>>