文章目录
- 什么是JVM垃圾收集器
- 四种垃圾收集器(按类型分)
- 1.串行垃圾收集器(效率低)
- 2.并行垃圾收集器(JDK8默认使用此垃圾回收器)
- 3.CMS(并发)垃圾收集器(只针对老年代垃圾回收的)
什么是JVM垃圾收集器
垃圾收集器是负责执行垃圾回收的组件
,它们用于管理Java程序运行时的内存分配和释放
。垃圾收集器的主要任务是自动回收不再使用的内存对象
,并将内存空间重新回收
以供程序继续使用。
四种垃圾收集器(按类型分)
1.串行垃圾收集器(效率低)
Serial和Serial Old串行垃圾收集器,是指使用单线程进行垃圾回收
,堆内存较小,适合个人电脑
- Serial 作用于新生代,采用复制算法
- Serial Old 作用于老年代,采用标记-整理算法
垃圾回收时,只有一个线程在工作
,并且java应用中的所有线程都要暂停
(STW),等待垃圾回收的完成。
2.并行垃圾收集器(JDK8默认使用此垃圾回收器)
Parallel New和Parallel Old是一个并行垃圾回收器,JDK8默认使用此垃圾回收器
- Parallel New作用于新生代,采用复制算法
- Parallel Old作用于老年代,采用标记-整理算法
垃圾回收时,多个线程在工作,并且java应用中的所有线程都要暂停(STW
),等待垃圾回收的完成。(通过并行执行垃圾回收以提高性能)
相比较与串行垃圾收集器,并行垃圾收集器无非就是多开写线程来做垃圾回收,其实同样也要暂停所有正在执行的线程,只不过在多个线程并行回收效率比串行高
3.CMS(并发)垃圾收集器(只针对老年代垃圾回收的)
CMS全称 Concurrent Mark Sweep,是一款并发的
、使用标记-清除算法
的垃圾回收器,该回收器是针对老年代垃圾回收的
,是一款以获取最短回收停顿时间
为目标的收集器,停顿时间短
,用户体验就好
。
其最大特点是在进行垃圾回收时,应用仍然能正常运行。