jvm-all-8-垃圾回收的烦恼

[复制链接]
发表于 2025-3-29 14:44:41 | 显示全部楼层 |阅读模式

1、stw

image.png

image.png

什么是stw
Java应用程序所有工作线程就进入了安全点SafePointh后,所有工作线程被挂起,导致java应用程序全局暂停的现象被称为STW.

2、垃圾回收的串行、并行、并发有什么区别

image.png

串行回收和并行回收都会stw,并行回收在gc的时候所有cpu也都会stw;
并发回收则在gc时不会stw

3、如何判断垃圾回收器的好坏,性能指标有哪些(为什么选择这种)

image.png

image.png

4、深度解剖年轻代垃圾回收器原理

image.png

image.png

关于年轻代满了,如何处理?
答案是:垃圾回收器。
为了提升垃圾回收性能,垃圾回收器分为年轻代回收器和 老年代回收器。

image.png

以上原理就是 Serial垃圾回收器,
Serial是1999年发布的,年代最悠久的垃圾收集器,于idk1.3之前就开始使用。特点:

1.分代:年轻代,
2.工作方式:单线程串行回收
3.算法:复制算法
4.性能设计:停顿时间短(响应速度快)
应用场景:
单CPU单核的环境下,适用于Client模式下的年轻代收集器。现在大家只要了解就可以了,现在市面上基本找不到单CPU单核了,所以这个收集器在当今已经过时了,

5、详解年轻代回收器ParNew+Parallel

image.png

image.png
Parallel高吞吐量的前题是没有用户交互的服务 如定时器

image.png

6、深度图解老年代 Serial & Parallel Old垃圾回收器

image.png

image.png

image.png

ps:老年代只有两种算法,一是标记清除算法 二是标记整理算法

7、为什么会出现CMS垃圾回收器?

由于历代垃圾回收器都是串行或独占式回收的,例如前面3个年轻代回收器 + 2个老年代回收器,都是必须停止工作线程后,gc线程才开始垃圾清除。
在这样的大背景下,于2002年JDK1.4.2发布CMS,它是哪个时代第一次实现并发收集器(先对来说),即实现了让垃圾收集线程与用户线程同时工作。
CMS的特色就是停顿时间短(低延迟),停顿时间越短就越适合用户交互的程序,越能提升用户体验,在G1收集器面世之前,CMS基本都是JVM的标配,甚至是现在市面都是很多系统在使用CMS。

讲下串行,并行都是独占执行,,但并发回收是用户线程和gc线程交替执行,3个年轻+2个老年代的回收器

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

GMT+8, 2025-4-19 08:54 , Processed in 0.066944 second(s), 36 queries Archiver|手机版|小黑屋|Attic ( 京ICP备2020048627号 )

快速回复 返回顶部 返回列表