关于内存优化,人云亦云 各有己见。本文将通过设置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. CAS (14) —— CAS 更多用户信息

    CAS (14) -- CAS 更多用户信息 摘要 将更多用户信息写入到service验证返回消息中 版本 tomcat版本: tomcat-8.0.29 jdk版本: jdk1.8.0_65 cas ...

  2. Knockout开发中文API系列1

    从本节开始介绍关于KnockoutJs相关的内容,本节主要介绍knockoutjs一些重要特性与优点,以及它与Jquery等框架库之间的区别. 1.Knockout.js是什么? Knockout是一 ...

  3. MVC个人网站开发笔记-150302

    上传图片 参考这篇文章:http://www.cnblogs.com/kissdodog/archive/2012/12/15/2819025.html 调用ajaxFileUpload,控制器里面编 ...

  4. c# 读取excel数据的两种方法

    转载自:http://developer.51cto.com/art/201302/380622.htm, 方法一:OleDb: 用这种方法读取Excel速度还是非常的快的,但这种方式读取数据的时候不 ...

  5. aps.net MVC view 判断方法

    两种方式 1.使用Razor 视图 新建app_code文件夹(在这个目录下ShowHelper.cshtml会自动编译成类,方法必须都是静态的) @functions{ //是否显 public s ...

  6. jquery 发get post请求

    https://www.cnblogs.com/summers/p/3225375.html POST 方法不会缓存数据 $.get(URL,callback); 2个参数 callback 参数是请 ...

  7. 为HTML5开发人员量身打造的7个Web框架

    HTML5规范开发完成时,将成为主流.据统计2013年全球将有10亿手机浏览器支持HTML5,同时HTML Web开发者数量将达到200万.毫无疑问,HTML5将成为未来5-10年内,移动互联网领域的 ...

  8. 关于Unity中的3D拾取

    3D拾取 3D游戏实际上看到的是2D画面,我们在屏幕上点击,想要找到哪个3D物体,我们实际上是在一个2维平面内做3D拾取. 3D拾取实际上是,当玩家点击屏幕的时候,会从显示屏幕的摄像头发射一条射线,射 ...

  9. git之移除.idea

    有时候不小心提交了.idea目录,git会一直track这个目录,可以通过一下命令移除: mv .idea ../.idea_backup rm -r .idea git rm -r .idea gi ...

  10. (笔记)Linux常用命令大全

    系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS ...