4

多线程统计 | GOT Online新功能上线

 3 years ago
source link: https://blog.uwa4d.com/archives/UWA_GOTOnline3.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

多线程统计 | GOT Online新功能上线

  • 作者:admin
  • 时间:1月11日
  • 浏览:268 次
  • 分类:万象更新

为了能大幅度降低主线程的压力,提升项目的运行帧率,我们更倾向于将与Unity API无关的操作放到子线程中进行处理。但是,在分析堆内存占用时,由于无法获取子线程的堆内存分配具体情况,定位分析时就存在一定门槛。

为了解决这个问题,我们在优化利器GOT Online的Mono模式中支持了多线程统计,配合GOT Online本身灵活使用、随改随测的特性,帮助大家更加快速地提升性能。下面是该功能的详细介绍。

当我们使用子线程并在其中分配堆内存时,比如下图中的组件,在Start中开启了两个子线程,并间歇性地分配堆内存:

1.png

这种情况下,Unity的Profiler中无法检测到这部分的GC.Alloc,但这部分依然需要我们关注,本质上其与主线程上的GC.Alloc是相同的:频繁分配会导致GC.Collect的调用,引用释放不合理会导致堆内存泄漏。

现在,通过使用 GOT Online的Mono模式进行测试,可以在测评报告的“具体堆内存分配”页面中看到前缀为“Thread”的函数,这表示这些函数是在“非主线程”中被调用并且进行了堆内存分配。点击某一函数后,即可看到该函数的堆内存分配细节,下图则为上述子线程调用代码的堆内存分配统计。

2.png
3.png

同时,如果这部分堆内存被引用而无法通过GC释放,可以在“堆内存泄漏分析”面板的对应函数中看到这部分堆内存增长情况,也可通过选中其中两节点进行比较,如下图所示。

4.png
5.png

点击右侧的蓝色按钮后,即可看到对应的堆内存对象类型,及其堆内存分配大小和数量。

6.png

说明:该功能目前支持2.3.0及以后版本的SDK,建议大家在UWA官网下载最新版本,体验最完整的功能。

7.png

还不了解 GOT Online这个黑科技?
一分钟了解它!

性能黑榜相关阅读

《那些年给性能埋过的坑,你跳了吗?》
《那些年给性能埋过的坑,你跳了吗?(第二弹)》
《掌握了这些规则,你已经战胜了80%的对手!》


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK