内存泄露和优化
======================概述
通过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.csdn.net/wetest_tencent/article/details/52318607
====