几句话总结CLR内存回收

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了几句话总结CLR内存回收相关的知识,希望对你有一定的参考价值。

关键字:对象可达图,代龄机制,终止化对象。

 

代龄机制:

0代满了之后,GC开始回收,剩下的对象升级为1代。(只有不可达的对象才会被回收。)

0代再回收几次之后,1代的对象慢慢增多然后达到阈值,GC同时回收0,1代对象。

1代回收剩下的升级2代,同样2代满了,GC会同时开始回收0,1,2代对象。

 

Finalize对象,终止链表,可达队列。

Finalize对象不可达之后,1.从终止链表中移到可达队列中--->2.特殊线程执行Finalize方法--->3.从可达队列中清除引用,变成不可达对象等待回收

至少要两次垃圾回收终止化对象和它所引用的对象在托管堆上的内存才能被回收,如果因为执行Finalize方法太长或其他原因第二次GC没有回收它,终止化对象代龄会增加,回收时间会更加的漫长。

 

以上是关于几句话总结CLR内存回收的主要内容,如果未能解决你的问题,请参考以下文章

重温CLR(十五) 托管堆和垃圾回收

c# 垃圾回收。 .NET CLR 内存性能计数器显示 0 代表 gen 0 堆大小等。这是啥意思?

应用程序集和CLR 垃圾回收

浅析CLR的GC(垃圾回收器)

Java内存回收和常用算法

CLR GC