新功能!Lua,是时候和你走走心了!

栏目: Lua · 发布时间: 6年前

内容简介:目前,Lua已经俨然成为了各大研发团队中实现代码热更新功能的标配方案。它方便灵活,对于项目中增加功能和修复Bug非常方便。然而,随着Lua在项目中的大量使用,它所带来的性能问题也逐步成为了项目运行时的重大性能瓶颈之一。特别是内存相关的性能问题,无论是内存分配过大还是内存泄露无法回收,目前都已经在不少研发项目中集中爆发。为此,我们今天在UWA GOT中推出Lua的内存深度检测,凡是已购买了UWA GOT Online服务的用户,可通过真机测试后将测试数据上传至UWA官网分析,即可查看Lua内存的检测报告。

目前,Lua已经俨然成为了各大研发团队中实现代码热更新功能的标配方案。它方便灵活,对于项目中增加功能和修复Bug非常方便。然而,随着 Lua 在项目中的大量使用,它所带来的性能问题也逐步成为了项目运行时的重大性能瓶颈之一。特别是内存相关的性能问题,无论是内存分配过大还是内存泄露无法回收,目前都已经在不少研发项目中集中爆发。

为此,我们今天在UWA GOT中推出Lua的内存深度检测,凡是已购买了UWA GOT Online服务的用户,可通过真机测试后将测试数据上传至UWA官网分析,即可查看Lua内存的检测报告。

新功能!Lua,是时候和你走走心了!

目前的版本已经支持了较为主流的 uLua、ToLua、SLua 和xLua 。若研发团队将Lua的Native库重编译成自定义名字,可通过UWAEngine.SetOverrideLuaLib接口来指定库名。 Lua内存检测目前分为三个部分:总体堆内存、堆内存具体分配和Mono对象引用,下面我们将逐一介绍。

1、总体堆内存

该页面记录了Lua的总内存走势以及Lua中几种重要对象的数量:Table,Userdata和Function(由于通常情况下thread的数量较少且稳定,因此这里不再显示)。

新功能!Lua,是时候和你走走心了!

如上图所示,我们可以清晰地查看项目运行至某一帧时的Lua内存占用,从而评估该数值是否符合预期,是否存在内存泄漏的风险。

2、堆内存具体分配

该页面便于研发团队定位Lua堆内存分配较多的函数,我们可以查看这些函数在任意一帧的具体分配堆栈,帮助用户优化Lua的堆内存分配,降低Lua GC的触发频率和触发时的开销。

新功能!Lua,是时候和你走走心了!

注:Lua函数的命名格式为X@Y:Z,其中X是其函数名,在无法获取时,X会变为默认的unknown;Y是该函数定义的文件位置;Z则是该函数被定义的结束行号。需要注意的是,当Lua脚本以字节码运行时,该值将始终为0,因此建议在测试时尽可能使用Lua源码来运行。

同时,效仿之前的Mono堆内存倒序分析功能,在Lua的堆内存中我们同样可以这样查看。只需要切换查看方式,我们就可以直观地定位到底哪一个Lua脚本中的哪一行代码在分配大量堆内存。这样,研发团队就能直接打开对应的Lua脚本,找到那一行和函数直接修改,优化从此变得如此简单。

新功能!Lua,是时候和你走走心了!

3、Mono对象引用

在任意一种Lua插件中,都存在类似的机制:在C#层维护一个Cache来引用那些被Lua访问过的C#层对象,防止出现以下的问题:当Lua中再次访问该C#对象时,该对象可能已经被C#层的GC回收掉了,从而导致逻辑错误。 所以,在Lua中始终保留某个C#层对象的引用,将会导致其无法被释放,当这样的引用越来越多,就会导致C#层的内存泄漏。

为了便于用户排查这种情况,我们在Mono对象引用的报告页面中对上述的Cache中C#层对象进行了汇总,统计了Cache中出现的对象类型和各个类型的对象总数。当该对象继承自UnityEngine.Object时,还将统计该类型中已经被Destroy的对象数量,如下图所示:

新功能!Lua,是时候和你走走心了!

点击上图的每个对象类型,可以查看它们的总数变化。对于某些数量持续上涨的对象类型,可以通过对比两个不同采样点的对象引用,从而进一步定位Lua中不合理的引用。

新功能!Lua,是时候和你走走心了!

这次的Lua内存深度检测小编就安利到这里啦,关于CPU性能分析的功能我们也会在后续推出,力求为开发者提供更多支持,欢迎关注!

友情提示:Lua内存检测服务目前仅在UWA GOT Online中提供,同时需要大家更新使用的SDK哦!黑科技的大刀快耍起来!

关于UWA GOT Online

UWA GOT 是UWA推出的本地性能测评工具,它方便研发团队在本地真机测试,并能在编辑器中搭建本地服务器查看性能数据。现在,在UWA GOT现有的本地测评模式上,我们增加了线上同步和分析功能,研发团队可以将本地测评的数据快速同步到UWA官网,生成在线测评报告,提供更高效的性能分析数据及有针对性的优化建议。同时,贴心的版本对比功能,方便研发团队轻松监测每次测试中的重要性能参数变化趋势,从质量管控上为项目的研发保驾护航。


以上所述就是小编给大家介绍的《新功能!Lua,是时候和你走走心了!》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

爆款文案

爆款文案

关健明 / 北京联合出版公司 / 2017-12 / 42.00元

爆款10W+文案是怎么写出来的?前奥美金牌广告人、知乎25K高赞回答者关健明力作《爆款文案》解构文案打动人的4大黄金法则,公开18种文案写法,75篇实战案例,100多幅释义插图,透露把文案变成“印钞机”的私密武器,手把手教你写出爆款销售力。 市面上有很多大而全的文案书,往往比较宽泛,本书只聚焦一个点:文案如何卖掉产品,赚到钱。 前奥美金牌广告人、知乎25K高赞回答者:关键明,擅长撰写销......一起来看看 《爆款文案》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具