1,CLR开始GC
2,暂停进程所有线程(防止线程在CLR检查期间访问对象并更改其状态)
3,CLR进入GC的标记阶段(首先将所有对象同步块索引字段中的一位设为0)
4,CLR检查所有活动根,如果根为null则检查下一个。任何根如果引用了堆上的对象,CLR都会标记该对象(将该对象同步块索引字段中的一位设为1)
5,一个对象被标记后,CLR会查询该对象的根,标记它们引用的对象。如果发现已经标记,就不重新检查对象的字段,避免产生死循环。
本文详细介绍了CLR(公共语言运行时)的垃圾回收过程。主要包括GC的触发、进程线程的暂停、对象标记阶段以及对象的查询标记等关键步骤。
1,CLR开始GC
2,暂停进程所有线程(防止线程在CLR检查期间访问对象并更改其状态)
3,CLR进入GC的标记阶段(首先将所有对象同步块索引字段中的一位设为0)
4,CLR检查所有活动根,如果根为null则检查下一个。任何根如果引用了堆上的对象,CLR都会标记该对象(将该对象同步块索引字段中的一位设为1)
5,一个对象被标记后,CLR会查询该对象的根,标记它们引用的对象。如果发现已经标记,就不重新检查对象的字段,避免产生死循环。
651
600
4223

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