Java 虚拟机面试题, Java 的 CMS 垃圾回收流程是怎样的?
Java 虚拟机面试题, Java 的 CMS 垃圾回收流程是怎样的?
QA
Step 1
Q:: 什么是Java虚拟机(JVM),它的主要作用是什么?
A:: Java虚拟机(JVM)是一个虚拟的计算机,它能够执行Java字节码。JVM屏蔽了底层操作系统的差异,使得Java程序可以在各种操作系统上运行而无需修改。JVM的主要作用包括:加载代码、执行代码、管理内存(包括垃圾回收)、以及提供安全性管理。
Step 2
Q:: Java的CMS垃圾回收器的工作流程是怎样的?
A:: CMS(Concurrent Mark-
Sweep)垃圾回收器是JVM的一种并发垃圾回收器,适用于对响应时间敏感的应用程序。其工作流程包括:
1.
初始标记(Initial Mark):标记直接可达的对象,时间短暂,需要暂停所有应用线程。
2.
并发标记(Concurrent Mark):在应用线程继续运行的情况下,GC线程并发地遍历对象图,标记所有可达对象。
3.
重新标记(Remark):再次暂停所有应用线程,修正并发标记阶段由于程序运行导致的标记变化。
4.
并发清除(Concurrent Sweep):在应用线程继续运行的情况下,清除不可达对象,释放内存。
Step 3
Q:: CMS垃圾回收器有哪些优缺点?
A:: 优点:
1.
并发性:大部分工作与应用线程并发执行,因此减少了全停顿的时间。
2.
低延迟:适用于对响应时间敏感的应用场景。
缺点:
1.
不能处理浮动垃圾(floating garbage),需要更多的内存空间。
2.
标记和清除过程中的碎片化问题,可能导致内存不足而触发Full GC。
3. 停顿时间相较于G1
等垃圾回收器可能不够短。
用途
CMS垃圾回收器的知识对于Java开发者来说尤为重要,尤其是在高并发、低延迟的应用中,如在线交易系统、实时数据处理系统等。理解CMS的工作流程有助于开发者在应用性能不达标时调优JVM参数,或者在面对内存相关问题时快速定位和解决问题。CMS虽然逐渐被G`1`替代,但在一些老旧系统中仍然广泛使用,因此需要对其有足够的了解。\n相关问题
🦆
G1垃圾回收器与CMS垃圾回收器的区别是什么?▷
🦆
什么是垃圾收集的stop-the-world现象?▷
🦆
Java虚拟机中的分代垃圾回收机制是什么?▷
🦆
如何调优CMS垃圾回收器的参数?▷