内存 Unity3D 游戏开发之内存优化 使用link.xml来控制strippinglevel减少dll库大小技巧、优化安装包大小 性能优化,进无止境-内存篇  Android内存分析和调优(上) - 山水含清晖 Unity取得iOS设备的剩余可用内存 你必须知道的.NET 内存分配 Linux内存点滴:用户进程内存空间 Linux内核笔记--内存管理之用户态进程内存分配

 Unity内存优化

http://blog.csdn.net/y1196645376/article/details/52751126

http://www.cnblogs.com/qiaogaojian/p/5968890.html 

 

性能分析 Profiling

http://game.ceeger.com/Manual/MobileProfiling.html

http://game.ceeger.com/Manual/UnderstandingAutomaticMemoryManagement.html

 

使用link.xml来控制strippinglevel减少dll库大小技巧、优化安装包大小

http://www.tuicool.com/articles/InMnaeb

https://docs.unity3d.com/Manual/iphone-playerSizeOptimization.html

 

性能优化,进无止境-内存篇 

http://blog.uwa4d.com/archives/optimzation_memory_1.html

http://blog.uwa4d.com/archives/optimzation_memory_2.html

 

深入理解内存

http://blog.chinaunix.net/uid-22996709-id-3341780.html

 

操作系统内存管理——分区、页式、段式管理

http://blog.csdn.net/hguisu/article/details/5713164

 

Android内存分析和调优(上) - 山水含清晖

http://www.tuicool.com/articles/2uM3Yj

 

 

Unity3D占用内存太大的解决方法

http://www.cnblogs.com/88999660/archive/2013/03/15/2961663.html

 

Unity AssetBundle爬坑手记

http://www.cnblogs.com/ybgame/p/3973177.html

 

UNITY3d在移动设备上的一些优化实战(一)-概述

http://blog.csdn.net/leonwei/article/details/39233921

 

总结使用Unity 3D优化游戏运行性能的经验

http://www.199it.com/archives/147913.html

 

unity 真机调试

andriod: http://blog.csdn.net/luyuncsd123/article/details/17735823

IOS: 

[风宇冲]iOS调试的一个实用技巧: http://blog.sina.com.cn/s/blog_471132920101dl6h.html

 

使用Xcode和Instruments调试解决iOS内存泄露

http://www.uml.org.cn/mobiledev/201212123.asp

http://blog.sina.com.cn/s/blog_8157560c0101h7h3.html

 

Instruments 用户指南

http://cdn.cocimg.com/bbs/attachment/Fid_6/6_24457_90eabb4ed5b3863.pdf

 

Unity取得iOS设备的剩余可用内存

http://unity3d.9tech.cn/news/2013/1226/39390.html

操作系统概念(第八章) 内存管理(一)

http://blog.csdn.net/u013007900/article/details/50180451

你必须知道的.NET 内存分配

http://developer.51cto.com/art/201209/358697.htm

C语言中内存分配

http://blog.csdn.net/youoran/article/details/10990815

 

操作系统中堆和栈的区别

http://blog.csdn.net/speedme/article/details/22943191/ 

 

Linux内存点滴:用户进程内存空间

http://blog.jobbole.com/45733/

 

Linux内核笔记--内存管理之用户态进程内存分配

http://www.cnblogs.com/JaSonS-toy/p/4998936.html 

linnux 环境内存分配原理

http://www.360doc.com/content/14/1025/15/15064667_419739905.shtml

 

5.【腾讯内部工具分享】U3D资源优化工具
http://wetest.qq.com/lab/view/41.html


4. 用透了 Cube 工具。
http://wetest.qq.com/lab/view/108.html


3.tMemoryMonitor简称TMM
TMM下载地址:http://wetest.qq.com/cloud/index.php/index/TMM

tMemoryMonitor简称TMM,是一款运行时C/C++内存泄漏检测工具。TMM认为在进程退出时,内存中没有被释放且没有指针指向的无主内存块即为内存泄漏,并进而引入垃圾回收机制,在进程退出时检测出堆内存中所有没有被引用的内存单元,因而内存泄漏检测准确率为100%。

--------- 资源是否被new成多个对象,即资源重复。static解决。
--------- 该release的是否没release掉。
--------- 定位内存的方法。
我们使用 dumpsys meminfo com.xxx.xxx (app包名),查看内存占用情况如下图:
cat 一下进程,可以看到最大占用(这里包括虚拟机和原生)如下图:
adb shell cat /proc/2015/statues......


2. 严格控制static的使用,非必要的地方禁止使用static。


1. 定位内存泄漏的点:----方法
a. Cube------
b. Memory Profiler For Unity5 --------- 快照对比

那么在平时项目中,我们如何找到这些泄漏的资源呢?
最直观的方法,当然也是最笨的方法,就是在每次游戏状态切换的时候,做一次内存采样,并且将内存中的资源一一点开查看,判断它是否是当前游戏状态真正需要的。这种方法最大的问题,就是耗时耗力,资源数量太多眼睛容易看花看漏。
这里介绍两种讨巧的方法:
1) 通过资源名来识别。即在美术资源(如贴图、材质)命名的时候,就将其所属的游戏状态放在文件名中,如某贴图叫做BG.png,在大厅中使用,则修改为OG_BG.png(OG = OutGame)。这样在一坨IG(IG=InGame)资源里面,混入了一个OG,可以很容易地识别出来,也方便利用程序来识别。这么做还有一个好处,可以强化美术对资源生命周期的认识,在制作资源,特别是规划UI图集时,可以有一个指导意义。
2) 通过Unity提供的接口Resources.UnloadUnusedAssets()进行资源的Dump,可以根据需求Dump贴图、材质、模型或其他资源类型,只需要将Type作为参数传入即可。Dump成功之后我们将结果保存成一份文本文件,这样可以用Beyond Compare对多次Dump之后的结果进行比较,找到新增的资源,那么这些资源就是潜在的泄漏对象,需要重点追查。
结合上述的方法与思路,应该可以轻松找到泄漏的资源了。

腾讯Wetest平台的Cube工具提供了mono内存快照对比的功能,并包括对象分配堆栈,对象引用关系等详细信息,是定位mono内存泄漏问题的一大利器。