内存泄露和优化

内存泄露和优化




======================概述

通过UnityEngine命名空间中的接口分配的内存,将会通过Unity分配在Native堆
通过System命名空间中的接口分配的内存,将会通过Mono Runtime分配在Mono堆


Resources.UnloadUnusedAssets()//内部包括gc
GC.Collect()



Mono内存分为两部分,已用内存(used)和堆内存(heap),
已用内存指的是mono实际需要使用的内存,
堆内存指的是mono向操作系统申请的内存,两者的差值就是mono的空闲内存。

当mono需要分配内存时,会先查看空闲内存是否足够,
如果足够的话,直接在空闲内存中分配,
否则mono会进行一次GC以释放更多的空闲内存,

如果GC之后仍然没有足够的空闲内存,则mono会向操作系统申请内存,并扩充堆内存



=====================解决

常用字符串进行缓存
使用stringbuild
GetComponent 只在onstart用并且存起来
使用comparetag




Resources.FindObjectsOfTypeAll()进行资源的Dump,可以根据需求Dump贴图、材质、模型或其他资源类型,只需要将Type作为参数传入即可。Dump

成功之后我们将结果保存成一份文本文件,这样可以用Beyond Compare对多次Dump之后的结果进行比较,找到新增的资源,那么这些资源就是潜在的

泄漏对象,需要重点追查。



wetest(apk,上传apk,cube(免root))
===
uwa
===
Unity eaglEEye 性能分析平台应用案例
===
bugly
===
github unity- memory profiler
===
assetbundle browser





=====================引用


相信各位程序猿们或多或少都会听到过内存泄漏这个名词,但是对于一些新手猿来说,或许不是很了解。内存泄漏?是内存漏出来了么?和霸气侧漏

一样么?让我们先来看一下wikipedia的定义
https://blog.youkuaiyun.com/wetest_tencent/article/details/52318607

====
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值