CMS与G1的区别?
2025-01-09
NEW个对象
使用范围:
1、CMS是老年代回收器,可以配合其它Serial和ParNew收集器一起使用。
2、G1是全局范围的,不需要配合其它垃圾器使用
STW的时间:
1、CMS收集器以最小的停顿时间为目标的收集器。
2、G1收集器可预测垃圾回收的停顿时间(建立可预测的停顿时间模型)
内存碎片:
1、CMS收集器是使用“标记-清除”算法进行的垃圾回收,容易产生内存碎片
2、G1收集器使用的是“标记-整理”算法,进行了空间整合,降低了内存空间碎片。
回收步骤:
1、CMS收集器:初始标记 -> 并发标记 -> 重新标记 -> 并发清除
2、G1收集器:初始标记 -> 并发标记 -> 最终标记-> 筛选回收
适用场景:
CMS:
堆内存相对较小(一般小于4GB),对延迟要求严格的应用。
适合老一代的低延迟需求,但对高负载场景可能不够高效。
G1:
大堆内存(一般大于4GB)且停顿时间要求明确的场景。
特别适合大数据处理和需要更好预测性的大型应用。
G1 是 CMS 的下一代替代品,更适合现代的大型Java应用程序,因此在JDK 9及更高版本中,G1 已逐步取代CMS成为默认垃圾回收器。
上一篇:索引失效的问题如何排查?
下一篇:什么是反射机制?为什么慢?
相关文章
-
MySQL MVCC了解吗?
MVCC就是多版本并发控制,主要解决数据里读写并发问题。 在数据库读读操作是没问题的,写写操作通过加锁的方式解决,读写操作通过mvcc来解决的。
NEW个对象 2024-10-24
-
秒杀项目常见面试题
希望将过去所学的一些知识进行系统化的深入理解。秒杀项目应用场景丰富,涉及高并发、缓存、消息队列、分布式锁等多个中间件,更有利于对 Web 服务架构的深入学习。
NEW个对象 2026-06-12
-
如果你网站突然有很多流量你该如何处理?
网站突然有大量流量的话,一般有以下俩种情况? 1、出现了热点事件。 2、网站被攻击了,比如:DDOS 那么技术上需要引入限流组件,保持系统的稳定。
NEW个对象 2024-10-21
NEW个对象
JAVA是世界上最好的语言