jvm垃圾回收器中使用的算法

java高级交流群 37341439     无下限,不搞歧视,欢快的交流~

1:引用计数法(经典,古老)
     有对象引用count+1,当count为0时,回收。
     当a引用b,b引用a时,就会出现无法回收的情况,所以java垃圾回收器没有使用这种算法。

2:标记-清除算法
     缺点:造成空间碎片
     从根节点找所有可达对象,然后清除所有不可达对象,容易产生很多不连续的空间,造成空间浪费     

3:复制算法
     适用于:垃圾对象多,存活对象少。
     新生代适用这种算法;
     效率高,但是需要内存分半

4:标记-压缩算法
     老年代适用这种算法
     从根节点找所有可达对象,然后将可达对象移动到连续的内存空间,然后清除所有不可达对象。保证了内存的连续。

5:增量算法
     其他算法都是一次性处理垃圾,如果处理时间很长,则会停顿很长时间。这种算法,垃圾收集线程会和应用程序线程进行切换,避免长时间的系统停顿,但是由于线程的切换造成了上下文的切换消耗,总的回收成本会上升。
     
6:分代算法
     在新生代使用复制算法
     在老年代使用标记压缩算法


以上6中算法都是给垃圾回收器使用的;
     

你可能感兴趣的:(jvm垃圾回收器中使用的算法)