IOS内存管理小结

来源:互联网 发布:jenkins linux 安装 编辑:程序博客网 时间:2024/06/10 17:34

1. IOS的内存性能参数


IOS平台与PC平台在内存管理上区别很大,由于硬件限制,IOS设备普遍只允许应用

程序使用很少的内存空间。


根据经验,在非高清设备上是20M,在ipad1和itouch4

上是30M,在ipad2和iphone4上要大一些,但也不超过50M。


由于IOS设备的显存是共享内存的,所以同时使用的贴图资源过多的话也会造成内
存不足,影响程序的性能和稳定性。经验值是不要超过20M。



2.Unity3D引擎的几种资源管理方式:


1.1 将资源做成gameobject放在scene中,跟随level一起加载和释放。这是Unity


推荐的方式也是最自然的管理方式。好处是使用简单,可以异步加载和释放。


1.2 将资源放在Resources目录下,使用Resources.Load来加载,使用


Resources.UnLoadUnusedAssets来释放。这种方式好处是可以灵活的动态加载,


坏处是必须自己写释放资源的代码,并且不支持异步。


1.3 将资源打包成asset bundles,使用WWW来加载和释放。好处是可以从web上下


载资源,支持异步。坏处是资源必须先打包,加载和卸载都需要写额外的代码来


处理。


3. IBABY开发中的实践


IBABY在开发过程中没有认识到内存管理的严重性,在开发后期测试和发布过程中


走了很多弯路,总结如下:
3.1 对开发过程中使用到的模型,贴图,动作,声音,XML配置等资源文件必须严

格控制其大小,尤其是UI贴图必须使用拼接的方式,避免不必要的大贴图出现。


3.2 提倡将资源放在level中管理,合理分割level。限制使用Resources目录,

确保Resources.Load加载的资源有对应的释放机制。


3.3 配置文件加载完后要及时释放,声音,特效等资源不要缓存,随用随加。但

要处理好异步加载。


3.4 要用好instruments工具,持续监测内存性能指标,及时解决内存不正常增长
的问题。


  以上内容是鄙人的一家之谈,未免失之偏颇,欢迎交流指正。