
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
垃圾回收算法的应用在许多Java编程开发项目中都是非常常见的一个功能,而本文我们就通过案例分析来了解一下,Java垃圾回收算法对比分析。
jvm垃圾处理方法(标记清除、复制、标记整理)
标记—清除算法
标记阶段:先通过根节点,标记所有从根节点开始的对象,未被标记的视为垃圾对象;
清除阶段:清除所有未被标记的对象。
复制算法
将原有的内存空间分成两块,每次只使用其中一块,在垃圾回收时,将正在使用的内存中存活对象复制到未使用的内存块中,然后清除正在使用的内存块中所有对象。
标记—整理算法若对象存活率比较高,就要进行多次复制,效率比较低。
标记阶段:先通过根节点,标记所有从根节点开始的可达对象,未被标记的视为垃圾对象。
整理阶段:将所有的存活对象压缩到内存的一端(或向一端移动),之后清理边界所有的空间。
分代收集算法只是根据对象存活周期的不同将内存划分为几块。一般把java堆分为新生代和老年代。
新生代大量对象死亡,只有少数对象存活,采用复制算法;
老年代对象存活率高,没有额外空间对它进行分配,故采用标记-清除或标记-整理算法。
三种算法的比较:
效率:复制算法>标记-整理算法>标记-清除算法(此处的效率只是简单的对比时间复杂度)
内存整理度:复制算法=标记-整理算法》标记-清除算法
内存利用率:标记-整理算法=标记-清除算法》复制算法
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。