介绍一下 CMSG1 收集器。
CMS(Concurrent Mark Sweep)是一种垃圾回收器,用于Java虚拟机中的内存管理。它主要用于低延迟应用,即需要快速响应时间的应用程序。
CMS收集器采用了并发标记清除算法,主要包括以下几个阶段:
- 初始标记(Initial Mark):在这个阶段,CMS会暂停应用程序的线程,标记出所有的根对象,包括根对象直接引用的对象。
- 并发标记(Concurrent Mark):在这个阶段,应用程序可以继续运行,而CMS会并发地标记出所有从根对象可达的对象。
- 重新标记(Remark):在这个阶段,CMS会暂停应用程序的线程,修正并发标记期间有可能发生变动的对象标记状态。
- 并发清除(Concurrent Sweep):在这个阶段,应用程序可以继续运行,而CMS会并发地清除标记为垃圾的对象,并回收内存空间。
G1(Garbage-First)是一种垃圾回收器,也用于Java虚拟机中的内存管理。它主要用于大内存应用,即需要管理大量内存的应用程序。
G1收集器采用了分代收集和并发标记整理算法,主要包括以下几个阶段:
- 初始标记(Initial Mark):与CMS类似,G1会暂停应用程序的线程,标记出所有的根对象。
- 并发标记(Concurrent Mark):应用程序继续运行,G1并发地标记出所有从根对象可达的对象。
- 最终标记(Final Mark):G1会暂停应用程序的线程,修正并发标记期间有可能发生变动的对象标记状态。
- 筛选回收(Live Data Counting):G1会根据各个内存区域的存活对象数量,优先回收垃圾最多的区域,以达到垃圾回收的最佳效果。
总体来说,CMS收集器适用于低延迟应用,而G1收集器适用于大内存应用。两者都采用了并发标记的方式,以减少垃圾回收对应用程序的影响
原文地址: https://www.cveoy.top/t/topic/h7x8 著作权归作者所有。请勿转载和采集!