您的位置:首页 > 职场人生

面试题,谈谈你对java垃圾收集器的理解

2015-04-01 16:23 603 查看
面试中经常会问Java垃圾收集器相关的东西,我想以下答案才是面试官想要的。内容来自周志明著《深入理解Java虚拟机》的总结

1、哪些内存需要回收

通过根搜索法,对经过一次标记之后,仍没有复活的对象。

哪些对象可以作为根:虚拟机栈中引用的对象、方法去中的类静态属性引用对象、方法区中的常量引用的对象、本地方法栈JNI的引用对象

注意:很多时候应聘的人会回答通过引用计数法来判断,虽然引用计数法效率很高,但Java中并没有采用,因为无法解决对象之间相互引用的问题

2、何时回收

在eden区满,无法为新生代对象分配内存的时候触发minor(少量的) gc;进去老年代的对象无法分配足够的内存空间 触发full gc;

minor gc:频繁,速度快

full gc:一般比minor gc 慢10倍以上

3、如何回收

新生代对象,使用复制的算法

老年代,标记--清除算法

新生代、老年代都有相应的收集器,并且种类繁多,大多都是相互配合使用的,有的并行,有的串行,有的先暂停在收集等等,这一块内容较多,详情请参见《深入
理解Java 虚拟机》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: