首先看片文章
https://www.zhihu.com/question/30334270
里面有张图
这里解释了在每个foreach循环之后会有一个boxing的过程,什么是boxing?(详细看这里:http://www.cnblogs.com/xiaoshi/archive/2008/05/28/1208902.html)
简单来说就是把值类型转换成引用类型。
这里的第二行就是boxing过程
第三行就是unboxing过程
也就是说每次使用foreach会在结束的时候在堆上申请一段引用内存(40Bytes,对list的引用)
而引用内存多了后会在GCCollect时候回收。
回收的过程会卡。
所以unity不要用foreach的原因是,会产生垃圾内存,导致卡顿
时间: 2024-10-20 13:39:00