首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
其他好文
> 详细
资源加载卸载与内存的关系
时间:
2015-04-11 18:00:35
阅读:
138
评论:
0
收藏:
0
[点我收藏+]
标签:
unity
内存
22 关于Resources.load和实例化与内存的关系:
1.加载,单纯的Resources.load后消耗的内存很低,可能只是基础的引用预载、当对象被实例化后才会占用大量内存,当实例化多个对象后和实例化一个相差不大,可能后边实例的对象引用了第一个。
2.卸载,单纯的把所有实例的obj给destroy后,内存不会释放,但是再次实例也不会耗内存,若Object b = Resources.Load("Canvas");这样写,还需要把b=null后再调用Resources.UnloadUnusedAssets()后整个内存才会被释放。
///最好不要给Resources.Load("Canvas");单独定义变量,如果忘记清除变量引用后,内存就释放不了、清除引用是指Resources.Load的引用而不是实例化对象的引用。
所以建议GameObject a = GameObject.Instantiate (Resources.Load("Canvas") as GameObject这样直接写,然后destroy 这个实例对象后,调用unload 就可以释放内存。
23 关于assetbundle的加载和实例化与内存的关系:
1.对于WWW.LoadFromCacheOrDownload方式加载,单纯的load进来也不耗什么内存,实例化后会耗很多内存,destroy实例对象后,不释放内存。调用Resources.UnloadUnusedAssets()或www.assetBundle.Unload (true);才能完全释放Unload (false)后似乎没有释放或者可能释放量极小。
结论:建议使用assetbundle.Unload (false),实例对象销毁后需要调用Resources.UnloadUnusedAssets()
2.对于WWW www = new WWW()方式加载,单纯的load需要消耗一份内存,实例化后再消耗一份内存。实例destroy后需要调用Resources.UnloadUnusedAssets()或www.assetBundle.Unload (true);才能释放实例对象内存,不能释放load的内存。Unload (false)后似乎没有释放或者可能释放量极小。
结论:一般最好不要使用该方法加载,会消耗双倍内存,可以用Resources.UnloadUnusedAssets()回收实例对象内存,本身load的内存无法手动回收。
3.对于AssetBundle.CreateFromFile():应该和1的情况类似。卸载资源只要引用没有了调用unload是有效的。
资源加载卸载与内存的关系
标签:
unity
内存
原文地址:http://blog.csdn.net/gy373499700/article/details/44996317
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
分布式事务
2021-07-29
OpenStack云平台命令行登录账户
2021-07-29
getLastRowNum()与getLastCellNum()/getPhysicalNumberOfRows()与getPhysicalNumberOfCells()
2021-07-29
【K8s概念】CSI 卷克隆
2021-07-29
vue3.0使用ant-design-vue进行按需加载原来这么简单
2021-07-29
stack栈
2021-07-29
抽奖动画 - 大转盘抽奖
2021-07-29
PPT写作技巧
2021-07-29
003-核心技术-IO模型-NIO-基于NIO群聊示例
2021-07-29
Bootstrap组件2
2021-07-29
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!