JVM与GC常见面试题汇总

1、垃圾收集器说一下?

答:常见的有七大垃圾收集器。首先是Serial收集器,它就是单个垃圾收集线程参与垃圾回收,期间会暂停所有的用户线程,也就是stop the world。新生代采用复制算法,老年代采用标记整理算法。第二个是ParNew收集器,它其实就是Serial收集器的多线程版本,就是多个垃圾收集线程参与垃圾回收,同样的也会暂停所有用户线程。新生代同样采用复制算法,老年代采用标记整理算法。第三个是Parallel Scavenge收集器,它也是多个垃圾收集线程参与垃圾回收,相比于ParNew垃圾收集器它更关注于吞吐量,还有个就是自适应调节策略,就是根据虚拟机收集到的性能监控信息去动态调整这些参数以提供最合适的停顿时间。第四个是SerialOld收集器,它是Serial的老年代版本,也是单个垃圾回收线程参与垃圾回收。第五个是Parallel Old收集器,是Parallel Scavenge收集器的老年代版本。第六个是CMS垃圾收集器,它是标记清除算法的一种实现,它分为4个阶段,初始标记、并发标记、重新标记、并发清除,初始标记是暂停用户线程,标记与GCRoots相连的对象,并发标记是同时开启GC和用户线程,用一个闭包结构去记录可达的对象并进行跟踪。重新标记是暂停所有用户线程,为了修正并发标记期间由于用户线程运行而产生变动的那部分对象。并发清除是开启用户线程,同时GC线程开始对未标记的区域做清扫。第七个是G1垃圾收集器,它默认将堆划分为2048个分区,也是分为4步进行收集,第一步是初始标记,暂停所有用户线程,标记与GCRoots相连的对象,第二步是并发标记,同时开启用户线程和GC线程,用一个闭包结构去保存GCRoots可达的对象并进行跟踪。第三步是最终

你可能感兴趣的:(Java面试大厂必备,面试,java)