【深入理解jvm笔记】经典垃圾处理器

本文深入探讨了Java虚拟机的经典垃圾收集器,包括Serial、ParNew、Parallel Scavenge、Serial Old、Parallel Old、CMS和G1收集器。各收集器的工作原理、特点、优缺点及参数设置进行了详细阐述,特别是CMS和G1收集器,强调了它们在停顿时间、吞吐量和内存碎片等方面的权衡。对于大型应用,G1收集器通常在大内存场景下表现出优势,而CMS在小内存应用中可能更为合适。
摘要由CSDN通过智能技术生成

经典垃圾收集器

《Java虚拟机规范》中对垃圾收集器应该如何实现并没有做出任何规定,因此不同的厂商、不同版本的虚拟机所包含的垃圾收集器都可能会有很大差别,不同的虚拟机一般也都会提供各种参数供用户根据自己的应用特点和要求组合出各个内存分代所使用的收集器。

image-20210217134448512

连线的垃圾收集器之间可以配合使用

Serial收集器

Serial收集器是一个单线程工作的收集器,它在进行垃圾收集时必须暂停其他所有线程直到它收集完毕

image-20210217134510366

迄今依然是HotSpot虚拟机运行在客户端模式下的默认新生代收集器,简单高效,在内存资源受限的环境是所有收集器额外内存消耗最小的

ParNew收集器

ParNew是Serial收集器的多线程版本,除了多线程运行外与Serial别无二致,下边三个参数和Serial相同

-XX:SurvivorRatio

-XX:PretenureSizeThreshold

-XX:HandlePromotionFailure

image-20210217134542969

运行在服务端模式下的新生代首选收集器,尤其是JDK 7之前的遗留系统中首选的新生代收集器,其中有一个与功能、性能无关但其实很重要的原因是:除了Serial收集器外,目前只有它能与CMS收集器配合工作。

ParNew是激活CMS收集器后默认的新生代收集器

JDK9以后ParNew只能配合CMS使用,作为CMS的新生代收集器

它默认开启的收集线程数与处理器核心数量相同,在处理器核心非常多(譬如32个,现在CPU都是多核加超线程设计,服务器达到或超过32个逻辑核心的情况非常普遍)的环境中,可以使用-XX:ParallelGCThreads参数来限制垃圾收集的线程数。

激活CMS:-XX:+UseConcMarkSweepGC

禁用或激活ParNew:-XX:+/-UseParNewGC JDK9去掉+命令

Parallel Scavenge收集器

Parallel Scavenge收集器也是一款新生代收集器,同样是基于标记-复制算法实现的收集器,也是能够并行收集的多线程收集器

Parallel Scavenge收集器的特点是它的关注点与其他收集器不同,CMS等收集器的关注点是尽可能地缩短垃圾收集时用户线程的停顿时间,而Parallel Scavenge收集器的目标则是达到一

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值