在上一篇文章中,我们简单讲了Java虚拟机的垃圾回收算法。如果说垃圾收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的实践者。
废话不多说,下面是各种经典垃圾收集器之间的关系图: 串行收集器-新一代 串行收集器是最基本也是最古老的垃圾收集器。 主要特点: 在垃圾收集过程中,它必须挂起所有其他工作线程,直到完成收集。 Stop The World在这里也体现得淋漓尽致。 更适合单核处理器或多核核心较少的环境。与同类收集器相比,简单高效; 也是所有垃圾收集器中额外内存消耗最小的 使用 标记复制 算法。 垃圾收集过程: ParNew 收藏家-新一代 简单来说,它本质上是Serial收集器的多线程并行版本。 主要特点: 目前除了Serial之外,唯一可以配合CMS收集器使用的 使用 标记复制 算法。 垃圾收集流程 并行清除收集器-新一代 该收集器的许多功能与 ParNew 类似。但与其他收藏家不同的是,它的侧重点不同。 Parallel Scavenge 收集器关注的是能否达到可控的吞吐量,而 CMS 等收集器则关注的是垃圾收集过程中用户线程的挂起。时间。 吞吐量:处理器运行用户代码所花费的时间与处理器消耗的总时间的比率 主要特点 主要用于适合分析任务在后台运行、不需要太多交互的场景。由于该收集器注重吞吐量,因此也称为 吞吐量优先收集器 使用 标记复制 算法。 精确控制吞吐量的参数 -XX:MaxGCPauseMillis 控制最大垃圾收集暂停时间 -XX:GCTimeRatio 设置吞吐量大小 系列老收藏家 – 老一代 老一代版本的Serial收集器有两个主要功能: JDK5之前,它与Parallel Scavenge收集器一起使用 作为 CMS 收集器故障时的备份计划 主要特点 单线程收集器 使用 标记组织 算法。 垃圾收集流程 并行旧收集器 – 老一代支持多线程并发收集,JDK6之后才提供。这是Parallel Scavenge的老一代版本 主要特点 使用 标签组织 算法 垃圾收集流程 CMS 收集器 - 老一代 又称并发低暂停收集器JDK 5发布时,HotSpot推出了一款在强交互应用中几乎可以称为划时代的垃圾收集器——CMS Collector;第一次,垃圾收集线程和用户线程(基本上)同时工作 主要特点: 使用 标记清除 算法 以获取最短恢复停顿时间为目标的垃圾收集器,适合更注重服务响应速度的应用需求 垃圾收集流程 初始标签:此处仍需要Stop The World 并发标志:可以与用户线程一起使用 备注:此处仍需要Stop The World 并发清理:可以与用户线程一起使用 缺点 所谓的缺点,自然离不开它所依赖的算法带来的缺点 在并发阶段,虽然不会导致用户线程暂停,但会占用一部分线程(或者处理器的计算能力),导致应用程序变慢,吞吐量降低。 CMS默认启动的回收线程数(处理器核心数+3)/4 有一个缓解计划:增量并发收集器 - 在 JDK9 后被放弃 无法处理漂浮垃圾;
串行收集器是最基本也是最古老的垃圾收集器。
Stop The World
标记复制
简单来说,它本质上是Serial收集器的多线程并行版本。
该收集器的许多功能与 ParNew 类似。但与其他收藏家不同的是,它的侧重点不同。 Parallel Scavenge 收集器关注的是能否达到可控的吞吐量,而 CMS 等收集器则关注的是垃圾收集过程中用户线程的挂起。时间。
吞吐量优先收集器
老一代版本的Serial收集器有两个主要功能:
标记组织
支持多线程并发收集,JDK6之后才提供。这是Parallel Scavenge的老一代版本
标签组织
又称并发低暂停收集器JDK 5发布时,HotSpot推出了一款在强交互应用中几乎可以称为划时代的垃圾收集器——CMS Collector;第一次,垃圾收集线程和用户线程(基本上)同时工作
并发低暂停收集器
标记清除
所谓的缺点,自然离不开它所依赖的算法带来的缺点
(处理器核心数+3)/4
漂浮垃圾
对话顾永强:优酷土豆
去哪儿陈振宇:无线端
什么是LBA硬盘?
移动硬盘出现异响怎么
华为邱龙:华为服务器
如何优化企业网站导航
企业官网建设收费标准
flex布局浅谈和实
html学习中的几个
HTML学习总结
CS231的一些资源
cs224n课后作业
CS入门技能树测评
Linux系统下Ap
java中的扫描仪是
java中的gui是
Java集合Link
LinkedHash
HashMap原理(
北京服务器的月费是如