内容引自深入理解java虚拟机
1.只有java堆需要考虑内存回收
2.如何确定对象已死:
一、引用技术算法:缺陷是对象间相互循环引用时无法回收,python
二、可达性分析算法:将一系列gc roots对象作为起始点,当一个对象到gc roots没有任何引用链相连时,则不可用。java,c#用的
3.java把引用分成四种:强引用,弱引用,虚引用,软引用
4.可达性分析中不可达的对象不是非死不可的,至少要经历两次标记过程。
先把不可达且有必要执行finalize()的筛选出来。之后由虚拟机自动建立的低优先级的finalizer线程执行,之后仍能免除一死。
5.方法区(永久代)的垃圾收集分为两种:废弃常量和无用的类
6.垃圾收集算法:
一、标记-清除算法
缺点:效率低,会产生空间碎片
二、复制算法
一块Eden,两块survivor
清理时将一块Eden和一块survivor上存活的对象复制到剩下的那块survivor上,之后清理掉前两者。
三、标记-整理算法
标记后,将所有存活的对象向一段移动,剩下的清理。
四、分代收集算法
商业虚拟机均用此,根据对象存活周期的不同分为新生代和老年代,新生代用复制算法,老年代用标记清除算法和标记整理算法。
福利大放送!还在为面试中不知道为自己所犯的错而迷茫么,还在为没有进行过实战而畏惧么,给你准备体验最好的模拟面试,你只需要一台电脑,专业的面试官给你面试,给你反馈,助力你面试成功!还为你定制修改你的简历哦~~
参加方法在后台回复“模拟面试”即可
牛客网欢迎大家原创文章,投稿请联系牛妹,更有机会得到kindle奖励!在这里,只跟你谈技术。
牛客网—程序员必备求职神器
蘑菇街内推正在进行哦!已经有人一面都结束啦!点击下方阅读原文申请哦~