New!Mono堆内存倒序调用分析——换个打开方式,解决效率大有不同!

New!Mono堆内存倒序调用分析——换个打开方式,解决效率大有不同!

UWA GOT (Online) 是UWA推出的性能优化工具(Online功能限时免费中),它提供了总体性能分析、Mono堆内存分析和运行时资源检测三大功能。其中,Mono堆内存分析报告可以帮助大家快速洞悉Mono分配过大和过快的问题,并定位堆内存泄露的出处。今天,我们将在该工具中推出Mono堆内存倒序查看功能,将原始的堆内存调用堆栈进行倒序排列,从而将真正分配Mono堆内存的深层子函数直接突显,便于研发团队更快定位堆内存问题的瓶颈。

请输入链接描述


当下,大量的游戏研发项目中调用的堆栈层数都比较深,有的甚至超过30层,因此研发团队任需花费大量的时间来展开、查找和定位其堆内存分配的具体子函数,但展开到最后,看到的都是类似的子函数信息。

请输入图片描述

如上图所示,红框、蓝框和绿框中的函数因其调用堆栈不同而被分开,但实则是同一个函数。

因此,我们在UWA GOT Online中推出Mono堆内存的倒序调用分析功能。通过选择“倒序调用分析”模式,我们即可查看游戏运行过程中Mono堆内存分配最多的Top子函数,如下图所示。

请输入图片描述

同时,研发团队可以点击每个子函数,查看其在不同测试版本中变化趋势。下图即为某一函数的堆内存分配均值(平均每10K帧)走势。对于堆内存分配持续上涨的子函数,建议研发团队重点关注,并通过回归测试来定位和排查。

请输入图片描述

此外,我们还可以查看该子函数在项目测试过程中,具体的分配信息和倒序堆栈信息。在倒序堆栈中,某结点展开后的直接函数列表为对该结点函数有所调用、并产生堆内存的父函数。研发团队也可以依次展开并查看其层级关系,深入了解这些堆内存分配的具体调用关系。

请输入图片描述

同时UWA提醒大家,更为实用的方法,则是直接通过前1~3层子函数,直接在代码中对其进行搜索,并直接对其堆内存分配进行优化。通过这种模式,研发团队可以更精准地定位堆内存分配出处,从而更高效对代码进行优化。

这么实用贴心的新功能,快打开你的UWA GOT试一试吧!^_^