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工具,持续监测内存性能指标,及时解决内存不正常增长
的问题。
以上内容是鄙人的一家之谈,未免失之偏颇,欢迎交流指正。