前言

最近做的手游项目(Unity+tolua架构)快接近尾声了,功能差不多齐备之后开始对各种技术指标进行优化。Unity自带的Profiler能对C#的Cpu和内存使用状况进行比较好的分析,但是无法涵盖lua部分,很多人可能跟我一样,对lua部分的优化觉得无从下手。本人在网上搜了很多工具之后发现了这个很实用的工具,能够对内存消耗情况和lua和mono的GC进行很好的监测,废话不多说,一起来看。

下载链接

https://github.com/ElPsyCongree/LuaProfiler-For-Unity

安装流程

Lua profiler支持XLua,Slua, ToLua以及一个远程工具支持Windows,Android, iOS真机调试

1.下载完成之后会看到LuaProfilerClient和LuaProfilerServer两个文件夹,你需要两个Unity工程,将Client文件夹拷进你的游戏工程的Assets目录,也就是根目录下(如果你的Lua 脚本在Plugins 文件夹,把LuaProfilerClient拷到Plugins下)

2. 用Unity 5.6或者更新的Unity版本创建一个空的工程,把LuaProfilerServer 拷进根目录里。如果你的版本低于5, 请在启动游戏时加入如下代码

MikuLuaProfiler.HookLuaSetup.OnStartGame();
3.在你的游戏工程,也就是放了LuaProfilerClient的工程下,在Windows菜单拦下会多出一个Lua Profiler Window的选项。打开之后出现这个

如果你在PC上测试,就按照图中的设置即可

4.接下来打开LuaProfilerServer 所在的工程,该工程就是观测内存的地方。也在Window -> Lua Profiler Window下打开Lua Profiler窗口,端口和Client里配置的保持一致便可以点击OpenService

控制台出现如下log说明Server已经开始等待Client的连接

5.这时就可以启动你的游戏工程了,Client显示如下,Server的Lua profiler出现数据说明已经连接成功。

Android手机真机调试(usb连接方式)

打包的时候ip地址填入 127.0.0.1 port:填入2333
在Player Settings里加上宏:USE_LUA_PROFILER
注意:不要编译 lua代码。

用usb线连接电脑和手机
命令行里执行

adb reverse tcp:2333 tcp:2333
原理是把手机的本地端口 映射为pc的 端口
先在pc的server工程里 OpenSerive, 再打开手机APP

功能介绍

参数说明
按照Lua Profiler从左到右的顺序逐一说明
totalLuaMemory    该函数及其子方法总共使用的lua内存(如果函数执行过程中发生了GC,此值会有略微不准)
self    该函数自身总共使用的lua内存,如果出现负值,是其子方法调用了GC
totalMonoMemory    该函数及其调用总共使用的Mono内存(如果函数执行过程中发生了GC,此值会有略微不准)
self    该函数自身总共使用的mono内存,如果出现负值,是其子方法调用了GC
currentTime    在当前帧下此调用该函数所用时间
averageTime    该函数的平均调用时间
totalTime    该函数总共的耗时
LuaGC    在当前帧下该函数产生的Lua GC
MonoGC    在当前帧下该函数产生的Mono GC
totalCalls    从游戏开始时该函数的调用计数
Calls    当前帧下该函数调用的次数

录制模式

录制模式能对一段时间里的内存使用情况进行逐帧的监测

点击Record按钮,再点击StartRecord按钮进入录制模式。再次点击StartRecord按钮会结束录制,此时可以对内存情况进行逐帧的查看,很类似Unity的Profiler的操作。

结语

优化的重点关注几个地方,

内存上涨的特别快的函数
产生Lua GC的函数
时长消耗比较长的函数,averageTime等指标
本文只是入门教程,我觉得已经足以解决很多基础的内存问题。如果有更多的问题,可以加QQ群:882425563 一起讨论

延伸阅读

https://www.zhihu.com/question/307064711/answer/570257565  工具作者ElPsyCongree写的关于性能检测文章

http://www.gamasutra.com/blogs/WendelinReich/20131109/203841/C_Memory_Management_for_Unity_Developers_part_1_of_3.php   C# for Unity内存管理的三篇文章

https://docs.unity3d.com/Manual/UnderstandingAutomaticMemoryManagement.html  Unity官网对内存管理的一些建议
————————————————
版权声明:本文为CSDN博主「大龄美飘」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wanna_ku/article/details/87535606

LuaProfiler:Lua内存优化工具教程相关推荐

  1. k8s如何设置虚拟内存_绝地求生内存优化设置教程(建议收藏)

    大家好,我是小宁萌. 可萌,可贱,又可爱. 我们知道吃鸡游戏对内存要求是比较高的,最低都是6GB起步,而如果你的电脑运行内存只有4GB,那么吃鸡会有很有压力,建议最好加一根同规格4GB内存,组建8GB ...

  2. Windows内存管理机密+揭穿内存优化工具的骗局

    原文:The Memory-Optimization Hoax:RAM optimizers make false promises 作者:Mark Russinovich 译者:盆盆   我们在浏览 ...

  3. Lua性能优化—Lua内存优化

    原文链接https://blog.uwa4d.com/archives/usparkle_luaperformance.html 这是侑虎科技第236篇原创文章,感谢作者舒航供稿,欢迎转发分享,未经作 ...

  4. SRS性能、内存优化工具用法

    SRS提供了一系列工具来定位性能瓶颈和内存泄漏,这些在./configure && make后的summary中是有给出来用法的,不过不是很方便,所以特地把用法写到这个文章中. 文中所 ...

  5. 内存优化之一——内存优化工具参数详解

    博客结构 1.背景 2.内存查看方式 (1).AS-Profiler (1).运行框-命令行 3.内存参数 (0)PSS (1)Java heap (2)Native Heap (3)Code (4) ...

  6. Lua内存泄露检查和性能检测工具

    1. ToLua#的编译 之前的博客有提到过,我们使用的是ToLua#作为Unity引擎和Lua之间的桥接工具,本文记录的集成工具都是在C层进行的,因此要编译自己的ToLua#. ToLua#的源码地 ...

  7. Unity lua内存泄漏与性能检测

    上周UWA发表了一片博文Lua性能优化-Lua内存优化作者分享了在unity中lua使用的不少干货,文中提到两个lua的小插件,一个是内存检查工具Snapshot,一个是性能分析工具LuaProfil ...

  8. 内存优化 · 基础论 · 初识 Android 内存优化

    [小木箱成长营]内存优化系列文章: 内存优化 · 工具论 · 常见的 Android 内存优化工具和框架 内存优化 · 方法论 · 揭开内存优化神秘面纱 内存优化 · 实战论 · 内存优化实践与应用 ...

  9. 深入探索Android内存优化

    前言 成为一名优秀的Android开发,需要一份完备的知识体系,在这里,让我们一起成长为自己所想的那样~. 本篇是Android内存优化的进阶篇,难度会比较大,建议对内存优化不是非常熟悉的前仔细看看在 ...

  10. ios 内存深度优化_iOS内存优化

    内存优化工具 Instruments的Allocations 这个工具能显示出应用的实际内存占用,并可以按大小进行排序.我们只要找出那些占用高的,分析其原因,找到相应的解决办法. Xcode的Memo ...

最新文章

  1. R语言使用igraph包进行网络(network)可视化实战:将变量映射到网络节点(vertex)、将变量映射到网络的边(edge)
  2. Nat. Commun.速递:合群者有着相似的大脑活动
  3. c++ 在哪里找文档来看_FPX双C十四连败引热议!Doinb:我再也不跟LWX双排了
  4. 软件工程实践之词频统计
  5. 关于写好文章的3个心法和5点技巧
  6. 在安装、重装MySQL时出现could not start the service mysql error:0的错误
  7. 高校计算机教研室工作计划,2017高校教研室工作计划
  8. 下单账号与支付账号不一致_如何申请企业支付宝账号
  9. react native之修改APP的名称和图标
  10. gmail邮箱注册成功流程
  11. Arduino PS2摇杆
  12. 对于algorithm101的总结
  13. 解密WEP和WPA-PSK/WPA-PSK加密的数据包
  14. [Pandas技巧] 多列值合并成一列
  15. SQL Server HA - 数据库镜像 (Mirroring)
  16. 面试题:堆、栈、队列的区别以及使用场景
  17. 伺服系统基于陷波滤波器双惯量伺服系统机械谐振抑制matlab Simulink仿真
  18. Python的就业方向、薪资,学完前景怎么样?
  19. dom4j实例 带注释
  20. 市值将近腰斩,三七互娱真的“失”在买量上吗?

热门文章

  1. Java vs ECS,垃圾回收的乾坤大挪移?
  2. 修复iPhonex不出声的左扬声器
  3. 边缘计算对于基础架构和运营领导者意味着什么
  4. 王庆的边缘计算(第四章)
  5. 【数字信号】基于matlab CEEMD数字信号分解【含Matlab源码 1383】
  6. 【人脸识别】基于matlab GUI BP神经网络人脸识别(含识别率)【含Matlab源码 891期】
  7. 【空瓶识别】基于matlab灰度+二值化空瓶检测【含Matlab源码 806期】
  8. 【人脸识别】基于matlab GUI肤色人脸识别定位【含Matlab源码 674期】
  9. 【表盘识别】基于matlab GUI二值化指针式表盘识别【含Matlab源码 275期】
  10. 人工智能 企业变革_我们如何利用(人工)情报变革医院的运营管理