java高级交流群
37341439 无下限,不搞歧视,欢快的交流~
1:引用计数法(经典,古老)
1:引用计数法(经典,古老)
有对象引用count+1,当count为0时,回收。
当a引用b,b引用a时,就会出现无法回收的情况,所以java垃圾回收器没有使用这种算法。
2:标记-清除算法
缺点:造成空间碎片
从根节点找所有可达对象,然后清除所有不可达对象,容易产生很多不连续的空间,造成空间浪费
3:复制算法
适用于:垃圾对象多,存活对象少。
新生代适用这种算法;
效率高,但是需要内存分半
4:标记-压缩算法
老年代适用这种算法
从根节点找所有可达对象,然后将可达对象移动到连续的内存空间,然后清除所有不可达对象。保证了内存的连续。
5:增量算法
其他算法都是一次性处理垃圾,如果处理时间很长,则会停顿很长时间。这种算法,垃圾收集线程会和应用程序线程进行切换,避免长时间的系统停顿,但是由于线程的切换造成了上下文的切换消耗,总的回收成本会上升。
6:分代算法
在新生代使用复制算法
在老年代使用标记压缩算法
以上6中算法都是给垃圾回收器使用的;

667

被折叠的 条评论
为什么被折叠?



