码迷,mamicode.com
首页 > 编程语言 > 详细

Java虚拟机之垃圾回收算法思想总结

时间:2018-02-05 12:41:13      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:垃圾回收算法   系统   对象   复制算法   垃圾回收   引用   内存   完成   分代   

1、引用计数法

  这是个比较古老而经典的垃圾回收算法,其核心就是在对象被其他所引用的时候计数器加1,而当引用失去时减1。这个方法有非常严重的问题:无法此话有理循环引用的情况,还有就是每次进行加减操作比较浪费系统性能。

2、标记清除法

  分为标记和清除两个阶段进行回收内存中的对象,这个方法也有很大的弊端,就是空间碎片问题,垃圾回收后的空间不是连续的,不连续的内存空间的工作效率要低于连续的内存空间。

3、复制算法

  其核心思想就是将内存空间分为两块,每次只使用其中一块,在垃圾回收时,将正在使用的内存中的保留对象复制到未被使用的内存块中去,之后去清楚之前正在使用的内存块中所有的对象,反复去交互两块内存的角色,完成垃圾收集。Java中的新生代form和to区就是使用这个算法。

4、分代算法

  根据对象的特点把内存分成N块,每块属不同代,然后根据每代的特点使用不同的算法,对于新生代和老年代来说,新生代回收频率高,但是每次回收耗时很短,而老年代回收频率低,每次回收消耗时间长,所以应该尽量减少老年代的GC。

5、分区算法

  将整个内存分成N多个小的独立的空间,每个小空间都可以独立使用,这样细粒度的控制一次回收少个小空间,而不是对整个空间进行GC,从而提升性能,减少GC停顿时间。

 

Java虚拟机之垃圾回收算法思想总结

标签:垃圾回收算法   系统   对象   复制算法   垃圾回收   引用   内存   完成   分代   

原文地址:https://www.cnblogs.com/yang75n/p/8416514.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!