关键字:对象可达图,代龄机制,终止化对象。
代龄机制:
0代满了之后,GC开始回收,剩下的对象升级为1代。(只有不可达的对象才会被回收。)
0代再回收几次之后,1代的对象慢慢增多然后达到阈值,GC同时回收0,1代对象。
1代回收剩下的升级2代,同样2代满了,GC会同时开始回收0,1,2代对象。
Finalize对象,终止链表,可达队列。
Finalize对象不可达之后,1.从终止链表中移到可达队列中--->2.特殊线程执行Finalize方法--->3.从可达队列中清除引用,变成不可达对象等待回收
至少要两次垃圾回收终止化对象和它所引用的对象在托管堆上的内存才能被回收,如果因为执行Finalize方法太长或其他原因第二次GC没有回收它,终止化对象代龄会增加,回收时间会更加的漫长。
时间: 2024-10-29 04:19:51