[百度面试问题之三]:请谈谈你对Java垃圾收集器中并行和并发概念的理解。
答:并行和并发这两个概念都是编程中的概念,在垃圾收集器的上下文语境中,我们应该这样理
解:
(1)并行(Parallel):指多条垃圾收集线程并行工作,但此时用户线程仍然处于等待状态。
(2)并发(Concurrent):指用户线程与垃圾收集线程同时执行(但不一定是并行的,可能
会交替执行),用户程序继续运行,而垃圾收集程序运行于另一个CPU上。
[百度面试问题之四]:当Java指定选用CMS垃圾收集器时,往往会产生一些“浮动垃圾”(Floating Garbage),谈谈你对"浮动垃圾"概念的理解,为什么会产生“浮动垃圾”?
答:由于CMS并发清理阶段用户线程还在运行着,伴随程序的运行自然还会有新的垃圾不断产生,这一部分垃圾出现在标记过程之后,CMS无法在本次收集中处理掉它们,只好留待下一次GC时再将其清理掉。这部分垃圾就称为“浮动垃圾”。