JVM与GC常见面试题汇总

本文总结了JVM和垃圾收集器的基础知识,包括七大垃圾收集器的工作原理,如Serial、ParNew、Parallel Scavenge等,以及它们在新生代和老年代的应用。此外,还讲解了类加载过程的五个阶段,GCRoots的重要性,以及JVM的组成部分和运行时数据区。同时,阐述了强引用、软引用、弱引用、虚引用的区别,并介绍了类加载器的双亲委派机制。最后,介绍了四大垃圾回收算法:引用计数法、复制算法、标记清除和标记整理算法。
摘要由CSDN通过智能技术生成

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可达的对象并进行跟踪。第三步是最终

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值