首页 > 试题广场 >

说说垃圾收集器

[问答题]
😥
编辑于 2022-07-05 17:19:58 回复(0)
Serial(新生代)、Serial Old(老年代):适用于单核小CPU,单核工作,回收时会暂停其他工作stop the word。
PawNew(新生代)、CMS(老年代):适用于多核CPU,最求短暂停时间,多核工作,使用标记清除算法,最短的暂停时间。
Parallel Scavenge(新生代-标记复制算法)、Parallel Old(老年代-标记整理算法):1.7,1.8默认的组合,适用于多核CPU,追求最大吞吐量
G1 jdk1.9默认,适用于大内存多核CPU服务器,它不按整个新生代或老年代去回收,而是开辟了面向局部收集,实现了较小的收集暂停时间和高吞吐量。
发表于 2022-07-18 00:17:39 回复(2)
我是辣鸡
发表于 2023-02-25 14:02:48 回复(0)
Serial(新生代)、Serial Old(老年代):适用于单核小CPU,单核工作,回收时会暂停其他工作stop the world。 PawNew(新生代)、CMS(老年代):适用于多核CPU,最求短暂停时间,多核工作,使用标记清除算法,最短的暂停时间。 Parallel Scavenge(新生代-标记复制算法)、Parallel Old(老年代-标记整理算法):使用与多核CPU,追求最大吞吐量。 G1:适用于大内存多核CPU服务器,它不按整个新生代或老年代去回收,而是开辟了面向局部收集,实现了较小的收集暂停时间和高吞吐量。
发表于 2022-07-23 14:03:41 回复(0)
垃圾收集器有serial(单线程、新生代)、old serial(单线程、老年代)、parallel scanvege(多线程、新生代、垃圾清除算法)、old parallel(多线程、老年代、垃圾整理算法)、parnew(并行收集器、新生代、多核CPU)、CMS(以吞吐量为代价换取最短停顿时间、老年代、多核CPU)、G1(增量收集、分阶段收集、分代回收、适用于多个CPU)
发表于 2022-09-09 21:51:49 回复(0)
单线程收集器 Serial (Stop the World) 新生代:Serial 复制算法 老年代:Serial Old 标记-整理算法 ParNew:是Serial的多线程并行版本 新生代:ParNew 复制算法 老年代:CMS 基于标记-清除算法 初始标记(Stop the World)并发标记 (不影响用户线程) 重新标记(Stop the World)标记-清除(不影响用户线程) Parallel Scavenge:多线程并行版本 新生代:基于标记-复制 注重高吞吐量 老年代:Parallel Old 基于标记-复制 G1:整堆收集器
编辑于 2024-03-18 21:16:44 回复(0)
😫
发表于 2022-11-20 11:23:52 回复(0)
垃圾回收器 串行垃圾回收器:Serial 标记复制,Serial Old标记整理 并行垃圾回收器: Par New,Paraller Old, Paraller Scavenge 并发标记扫描回收器: CMS 整堆:G1,ZGC
编辑于 2024-04-04 15:43:09 回复(0)
编辑于 2024-03-04 19:33:02 回复(0)
1.Serial(新生代)+Serial Old(老年代):适用于单核低CPU,单核工作,回收时会暂停其他工作“Stop The World”; 2.PawNew(新生代)+CMS(老年代):适用于多核CPU,使用标记清除算法,最短的暂停时间; 3.Parallel Scavenge(新生代-标记复制算法)+Parallel Old(老年代-标记整理算法):JDK7&8默认的组合:适用于多核CPU。追求最大的吞吐量; 4.G1 JDK9默认,适用于大内存多核CPU服务器,不会按整个新生代或老年代去回收,而是开辟了面向局部收集,实现了较小的手机暂停时间和高吞吐量;
发表于 2024-02-07 17:02:55 回复(0)
裂开
发表于 2023-10-16 09:43:03 回复(0)
垃圾收集器:目前有 Serial New, Serial Old,ParNew,Parallel Old,Parallel Scavenge,CMS,G1,ZGC,Shenandoah,Epsilon 收集器。 按照分代模型分:新生代收集器有 Serial New,ParNew,Parallel Scavenge,老年代收集器有 Serial Old,Parallel Old,CMS,摒弃了分代模型的收集器有 G1,ZGC,Shenandoah,什么都不做的收集器有Epsilon。 其中SNew,SOld,ParScavenge,ParOld,ParNew都是会在GC期间STW.之后的CMS,G1,ZGC,Shenandoah,这几款收集器只有在回收的一些特定阶段会STW. 官方的默认推荐组合为SNew+SOld,ParScavenge+ParOld,ParNew+CMS组合。下面简单介绍CMS,G1,ZGC,Shenandoah。 1.CMS:一款作用于老年代的基于标记-清除算***经历四个阶段 初始标记,并发标记,最终标记,并发清除,其中只有初始标记,最终标记会STW。 2.G1:摒弃了分代模型而采用了Region区域的形式,是一款基于标记-复制算法的收集器,会经历四个阶段,初始标记,并发标记,最终标记,筛选回收, 其中只有初始标记,最终标记,筛选回收会STW。 3.ZGC:是一款低延迟收集器,采用染色指针+读屏障解决了移动对象需要STW的难题,只有在初始标记,最终标记会STW.由于染色指针可以自愈,所以没必要进行最终重分配。 4.Shenandoah:是一款低延迟收集器,读写屏障+转发指针解决了移动对象需要STW的问题。只有在初始标记,最终标记,最终引用更新时需要STW. 5.Serial New:一款作用于新生代的基于标记-复制算法的单线程GC,会STW。 6.Serial Old:一款作用于老年代的基于标记-整理算法的单线程GC,会STW. 7.ParNew:一款作用于新生代的基于标记-复制算法的多线程GC,会STW。一般和CMS搭配使用。 8.Parallel Old:一款作用于老年代的基于标记-整理算法的多线程GC,会STW。 9.Parallel Scavenge:一款作用于新生代的基于标记-复制算法的多线程GC,会STW。一般和Parallel Old搭配使用。
发表于 2023-03-20 18:23:36 回复(0)
47
发表于 2023-03-07 10:13:18 回复(0)
新生代的垃圾回收期:serial、pawnew、parallel Scavenge 老年代:serial old、CMS、parallel old 混合回收:G1 串行回收器适用于单核单CPU,回收时会STW 并行回收期在标记和回收时使用多条 垃圾回收线程并行执行,注重吞吐量 CMS 和pawNew:适用于多核CPU,使用标记清除算***在老年代产生内存碎片,CMS是一个并发的垃圾回收器,采用并发标记,追求最短暂停时间。适用于多核CPU G1 分代收集和面向混合收集的垃圾回收器,将内存分为多个REGION按照每个region的回收价值进行回收,局部上看采用标记复制,整体上采用标记整理,实现较小暂停时间和高吞吐量
发表于 2023-02-25 16:39:37 回复(0)
Serial(串行),Serial Old(serial 老年代版本) ,两者都是单线程收集器,新生代收集是"标记-复制"算法("标记-复制"是会将内存区域进行划分,对内存利用率没有达到百分百),老年代收是"标记-整理"算法("标记-整理"不会出现大量的内存空间碎片,),特点是简单高效,缺点是在工作时会暂停其他工作线程 ParwNew(Serial的多线程版本)/CMS(真正意义上的第一款并发收集器).使用的是"标记-清除"算法(以获取最短的停顿时间),在收集后会产生大量空间碎片.工作流程大致是:1.初始标记(其他工作线程会有停顿),2.并发标记(并发启动工作和GC线程,以闭包结构记录可达对象并跟踪在记录过程中的引用变化),3.修正标记(会有停顿时间,修正并发期间有变动对象的记录),4.并发清除 Parallel Scavenge/Parallel Old收集器 (JDK1.8默认Parallel Scavenge + Parallel Old)Parallel Scavenge(重点关注CPU的工作效率,而非CMS注重的用户体验),新生代是"标记-复制",老年代是"标记-整理" G1收集器:通过"标记-整理"算法,可以独立管理整个堆,采用区域回收概念(维护一个优先列表),每次回收优先选择回收价值最大的一块区域,兼顾尽可能提高CPU的工作效率以及获取最短停顿时间来提高用户体验.工作流程大致为1.初始标记;2.并发标记,3.修正标记,4.筛选回收
发表于 2023-02-20 15:12:47 回复(0)