关于内存优化,人云亦云 各有己见。本文将通过设置Strpping Level ,减少内存使用。

先看三幅图:

1、没做任何优化,默认选项

2、设置Stripping level 为 Use micro mscorlib; 设置 script call Optimization为Fast but no exceptions

因为本demo用到jsonFX json解析器,牵扯到system.dll 里面的东西,所以程序直接崩掉。(Don't use anything that lives in System.dll or System.Xml.dll in your code. Those two are not compatible with micro mscorlib.)

3、解决了以上bug,优化后的效果:   内存基本减少了8.5MB 左右

如何解决第二部的残留问题呢:官方给了这么一个说法

How to Deal with Stripping when Using Reflection

Stripping heavily depends on static code analysis and sometimes it fails to do the job right, especially when dynamic features (like reflection) are used. In such cases some hinting what classes shouldn't be touched is needed. Unity iOS supports per project custom stripping black list. The process is simple:

1. Create link.xml file and place it directly into Assets (project root) folder.

2. link.xml sample structure is as follows:

<linker>
       <assembly fullname="System.Web.Services">
               <type fullname="System.Web.Services.Protocols.SoapTypeStubInfo" preserve="all"/>
               <type fullname="System.Web.Services.Configuration.WebServicesConfigurationSectionHandler" preserve="all"/>
       </assembly>
       <assembly fullname="System">
               <type fullname="System.Net.Configuration.WebRequestModuleHandler" preserve="all"/>
               <type fullname="System.Net.HttpRequestCreator" preserve="all"/>
               <type fullname="System.Net.FileWebRequestCreator" preserve="all"/>
       </assembly>
</linker>

结合本例:需要如下link.xml文件

<linker>
       <assembly fullname="System">
            <type fullname="System.ComponentModel.TypeConverter" preserve="all"/>
            <type fullname="System.ComponentModel.ArrayConverter" preserve="all"/>
            <type fullname="System.ComponentModel.BaseNumberConverter" preserve="all"/>
            <type fullname="System.ComponentModel.BooleanConverter" preserve="all"/>
            <type fullname="System.ComponentModel.ByteConverter" preserve="all"/>
            <type fullname="System.ComponentModel.CharConverter" preserve="all"/>
            <type fullname="System.ComponentModel.CollectionConverter" preserve="all"/>
            <type fullname="System.ComponentModel.ComponentConverter" preserve="all"/>
            <type fullname="System.ComponentModel.CultureInfoConverter" preserve="all"/>
            <type fullname="System.ComponentModel.DateTimeConverter" preserve="all"/>
            <type fullname="System.ComponentModel.DecimalConverter" preserve="all"/>
            <type fullname="System.ComponentModel.DoubleConverter" preserve="all"/>
            <type fullname="System.ComponentModel.EnumConverter" preserve="all"/>
            <type fullname="System.ComponentModel.ExpandableObjectConverter" preserve="all"/>
            <type fullname="System.ComponentModel.Int16Converter" preserve="all"/>
            <type fullname="System.ComponentModel.Int32Converter" preserve="all"/>
            <type fullname="System.ComponentModel.Int64Converter" preserve="all"/>
            <type fullname="System.ComponentModel.NullableConverter" preserve="all"/>
            <type fullname="System.ComponentModel.SByteConverter" preserve="all"/>
            <type fullname="System.ComponentModel.SingleConverter" preserve="all"/>
            <type fullname="System.ComponentModel.StringConverter" preserve="all"/>
            <type fullname="System.ComponentModel.TimeSpanConverter" preserve="all"/>
            <type fullname="System.ComponentModel.UInt16Converter" preserve="all"/>
            <type fullname="System.ComponentModel.UInt32Converter" preserve="all"/>
            <type fullname="System.ComponentModel.UInt64Converter" preserve="all"/>
       </assembly>
</linker>

第二步的错误得出 JsonFX需要依赖System.dll中的类型转化函数,所以通过以上link文件 保留system.dll中的类型转换函数。

另附:反射的link如下:

<linker>
            <assembly fullname="mscorlib">
                   <type fullname="System.Reflection"preserve="all"/>
                   <type fullname="System.Security.Cryptography"preserve="all"/>
           </assembly>
</linker>

参考资料:http://www.rbcafe.com/Softwares/Unity/Documentation/Manual/iphone-playerSizeOptimization.html

[原]unity3d ios平台内存优化(一)的更多相关文章

  1. [转]ios平台内存常见问题

    本文转自CocoaChina,说的满详细的: 链接地址:http://www.cocoachina.com/bbs/read.php?tid=94017&keyword=%C4%DA%B4%E ...

  2. Unity3D移动端内存优化(NGUI方面)

     Unity3D引擎技术交流QQ群:[21568554] 做3d移动端内存一直是人们头疼的问题,载入的资源释放了,还有其它的须要释放.比方ngui释放,事实上主要是NGUI的Texture和Spr ...

  3. Unity3D 的大场景内存优化

    我们公司的一个 MMORPG 项目最近在内存方面碰到了红线,昨天开会讨论了一下.我提出了一个改进方案,写篇 blog 记录一下. 问题是这样的.在当下的手机及平板硬件设备条件下,操作系统留给应用的可用 ...

  4. iOS App内存优化之 解决UIImagePickerController的图片对象占用RAM过高问题

    这个坑会在特定的情况下特别明显: 类似朋友圈的添加多张本地选择\拍照 的图片 并在界面上做一个预览功能 由于没有特别的相机\相册需求,则直接使用系统自带的UIImagePickerController ...

  5. [原]unity3D 移动平台崩溃信息收集

    http://m.blog.csdn.net/blog/catandrat111/8534287http://m.blog.csdn.net/blog/catandrat111/8534287

  6. iOS基础 - 内存分析

    一.内存的重要性 程序是否可用的最根本的制约因素. 十分影响用户体验. 程序的crash有很多情况都是内存的原因. 二.iOS平台内存警告机制 iOS系统不支持虚拟内存,一旦出现内存不足的情况,iOS ...

  7. Unity3D 游戏开发之内存优化

    项目的性能优化主要围绕CPU.GPU和内存三大方面进行. 无论是游戏还是VR应用,内存管理都是其研发阶段的重中之重. 然而,在我们测评过的大量项目中,90%以上的项目都存在不同程度的内存使用问题.就目 ...

  8. 转 iOS和android游戏纹理优化和内存优化(cocos2d-x)

    iOS和android游戏纹理优化和内存优化(cocos2d-x) (未完成) 1.2d游戏最占内存的无疑是图片资源. 2.cocos2d-x不同平台读取纹理的机制不同.ios下面使用CGImage, ...

  9. iOS性能优化-内存优化

    https://blog.csdn.net/a184251289/article/details/82589128 2018年09月10日 14:25:31 xingshao1990 阅读数:328 ...

随机推荐

  1. Selenium (4) —— Selenium是什么? WebDriver是什么?做什么?(101 Tutorial)

    Selenium (4) -- Selenium是什么? WebDriver是什么?做什么?(101 Tutorial) selenium版本: v2.48.0 (Standalone Seleniu ...

  2. 输//ip提示找不到应用程序

    输//ip提示找不到应用程序??? (未测试)试试:环境变量的 PATH 中添加 C:\Windows\system32 (未测试)试试:默认程序里----协议关联里:管理ie

  3. PAGED_CODE()

    #if DBG #define PAGED_CODE() \ /*APC_LEVEL*/) { \ VideoPortDebugPrint(, "Video: Pageable code c ...

  4. python 输出当前行号

    import sys print sys._getframe().f_lineno ---------------------------------------------------------- ...

  5. Ubuntu下架设FTP服务器

    Linux下提供了很多的ftp服务器,这里我选用了安全,快速,简单的vsftpd作为FTP服务器.本文是我在自己的Ubuntu 10.10 -32 位系统下搭建的.搭建方法简单,按照本过程,您也可以完 ...

  6. 【oneday_onepage】—— 美国人的仪容整洁与个人卫生

    There used to be an old joke in America that people should take a bath once a week, whether they nee ...

  7. MySQL 5.7主从复制从零开始设置及全面详解——实现多线程并行同步,解决主从复制延迟问题!

    MySQL 5.7主从复制从零开始设置及全面详解——实现多线程并行同步,解决主从复制延迟问题!2017年06月15日 19:59:44 蓝色-鸢尾 阅读数:2062版权声明:本文为博主原创文章,如需转 ...

  8. CodeWarrior WarningC12056

    C12056:SP debug info incorrect because of optimization or inline assemble 该warning是代码最优化时(common cod ...

  9. Loadrunner 26377错误

    26377错误的成因很多,总结最直接的结果就是No match found for the requested parameter "XXXXX".意思就是没有找到关联变量匹配的值 ...

  10. Pandas的排序和排名(Series, DataFrame) + groupby

    根据条件对数据集排序(sorting)也是一种重要的内置运算.要对行或列索引进行排序(按字典顺序), 可使用sort_index 方法, 它将返回一个已排序的新对象: 而DataFrame, 则可以根 ...