关于内存优化,人云亦云 各有己见。本文将通过设置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. PHP——安装wampserver丢失MSVCR110.dll

    win8系统 64位,在安装wampserver时显示计算机丢失MSVCR110.dll   1.首先是打开浏览器,在浏览器的地址栏里输入 http://www.microsoft.com/zh-CN ...

  2. CAS (5) —— Nginx代理模式下浏览器访问CAS服务器配置详解

    CAS (5) -- Nginx代理模式下浏览器访问CAS服务器配置详解 tomcat版本: tomcat-8.0.29 jdk版本: jdk1.8.0_65 nginx版本: nginx-1.9.8 ...

  3. angula学习

    入门 http://www.angularjs.cn/A004 http://www.cnblogs.com/whitewolf/p/angularjs-start.html http://www.n ...

  4. elasticsearch 服务安全配置

    elasticsearch安装与使用(5)-- search guard安装与配置   一.安装search guard插件必须要安装两部分: ①search-guard-xx ②search-gua ...

  5. springmvc搭建环境时报No mapping found for HTTP request with URI [/exam3/welcome] in DispatcherServlet with name 'spring2'

    项目是使用spring MVC (1)在浏览器中访问,后台总报错: No mapping found for HTTP request with URI [/exam3/welcome] in Dis ...

  6. Java设计模式(2)单态模式(Singleton模式)

    定义:Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在. 在很多操作中,比如建立目录 数据库连接都需要这样的单线程操作. 还有,singleton能够被状态化 ...

  7. Android studio导入framework编译的classes.jar包

    1.在libs文件夹中加入jar包,并将其置顶 注:studio3.1的scope没有Provided选项,都默认选择implementation,studio2.3及以下版本需要将scope设置为P ...

  8. C/C++文件输入输出操作——FILE*、fstream、windowsAPI

    基于C的文件操作在ANSI C中,对文件的操作分为两种方式,即流式文件操作和I/O文件操作,下面就分别介绍之. 一.流式文件操作这种方式的文件操作有一个重要的结构FILE,FILE在头文件stdio. ...

  9. adb server is out of date ADB server didn't ACK * failed to start daemon *一种解决方式

           记录个小问题,这两天用到了android中的远程调试一个开发板,经常碰到一个问题,android中ADB server didn't ACK * failed to start daem ...

  10. 第三百二十九节,web爬虫讲解2—urllib库爬虫—ip代理—用户代理和ip代理结合应用

    第三百二十九节,web爬虫讲解2—urllib库爬虫—ip代理 使用IP代理 ProxyHandler()格式化IP,第一个参数,请求目标可能是http或者https,对应设置build_opener ...