Unity的垃圾回收是在主线程运行的吗?

面试题

Unity的垃圾回收是在主线程中运行的吗?

回答

首先,Unity并不负责垃圾回收,Unity的脚本基于mono,而mono基于.NET(mono和.net的关系还没理清)。
在.NET 4.0之前,CIL使用并发垃圾回收技术来清理不再使用的对象。当对第0代或第1代(这两代称为暂时代)对象执行回收的时候,系统会暂时挂起所有活动的线程,确保应用程序在回收过程中不会访问托管堆。不在暂时代的对象,并发垃圾回收会有单独的线程去回收,并且允许在回收非暂时代的时候继续分配堆上的对象。
在.NET4.0之后,对暂时代的对象执行回收的时候,不再挂起其他线程,而是用额外的后台执行线程去负责回收。

疑问

用额外的后台执行线程去负责回收的时候,要是新分配了对象到托管堆上,后台线程该如何处理?怎么分辨?

参考

《精通C# 第六版 13.5,13.6章节》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值