Unity 4.6.x内存优化纪要

本文整理了Unity 4.6.x版本的内存优化要点,包括避免使用==比较tag、用for循环代替foreach、使用Struct而非Class、自定义无GC版本的GetComponentInChildren、利用StringBuilders拼接字符串、减少IEnumerable方法的使用、避免Boxing、建立对象池等策略,旨在提升性能并减少内存开销。同时,提供了一些检测内存泄漏和查看内存信息的方法。
摘要由CSDN通过智能技术生成

最近为了进行Unity内存优化,读了非常多的文章,现在暂时草草整理如下.

  • 不要直接用==比较tag, 使用tag.CompareTo(otherTag) == 0, 可以避免生成多余的GC byte. todo:生成多少(180?)
  • 避免使用foreach来遍历数组(还是一切范型?),使用for(;;)可以避免生成多余的GC byte
  • 数据容器尽量使用Struct, 而不是Class
  • GetComponentInChildren实现为自己的无GC版本
  • string的拼接避免+, 使用text.StringBuilders来实现
  • 对频繁的scope-bound的固定长度数组,尽量用成员变量数组来替代,进行重用,  只分配一次堆内存。或者使用struct代替。比如Vector3[4]变成Struct, 里面有4个Vector, 可以把数据全部分配到栈上.
  • 尽量避免IEnumerable的方法
  • 把类方法放入delegate或者Func<>会导致Boxed(装箱)
  • 尽量重用new出来的类,而不是重复new. 建立对象池

----------------------------------------------

怀疑有object有泄漏,没有被gc的时候,可以尝试在class中的ctor和dtor, 及各种clone函数中加入自己的计数,在合适地方打印出该class静态count的数值,确定是否被释放。

使用Object.FindObje

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值