20.EventViewer窗口

20.其他_窗口相关_事件查看窗口


20.1 知识点

事件查看窗口用来做什么

使用可寻址事件查看窗口可以监视可寻址资源的资源内存管理。

该窗口

  • 显示应用程序何时加载和卸载资源
  • 显示所有可寻址系统操作的引用计数
  • 显示应用程序帧率和分配的内存总量近似图

我们可以通过它来检查可寻址资源对性能的影响,并检查没有释放的资源。

打开事件查看窗口

注意:使用事件查看窗口的前提要勾选AddressablesAssetSettings配置文件中的事件发送开关SendProfilerEvents

  1. Window > Asset Management > Addressables > Event Viewer
  2. Addressabeles Groups > Tools > Window > Event Viewer

事件查看窗口使用

事件查看窗口参数

左上角:

  • Clear Event:清楚所有记录的帧,会清空窗口中所有内容
  • Unhide All Hidden Events:显示你隐藏的所有事件内容(当我们右键一个内容点击隐藏后才会显示该选项)

右上键:

  • Frame:显示当前所在帧数
  • 左按钮和右按钮:在记录的帧中前后切换查看信息
  • Current:选中当前帧

中央部分:

  • FPS:应用的帧率
  • MonoHeap:正在使用的托管堆内存量
  • Event Counts:事件计数,某一帧中发生的可寻址事件的数量
  • Instantiation Counts:实例化计数,某一帧中Addressables.InstantiateAsync的调用数量
  • Resource:资源的依赖相关
  • 线性图标:显示统计的什么时候加载释放资源的信息

下方:

  • Event 相关:显示当前帧中发生的可寻址操作的事件

进行测试观察事件查看窗口的变化

private List<AsyncOperationHandle<GameObject>> list = new List<AsyncOperationHandle<GameObject>>();

void Update()
{
    //创建对象 记录异步操作句柄 事件查看窗口会显示依赖的AB包
    if (Input.GetKeyDown(KeyCode.Space))
    {
        AsyncOperationHandle<GameObject> handle = Addressables.LoadAssetAsync<GameObject>("Cube");
        handle.Completed += (obj) => { Instantiate(obj.Result); };
        list.Add(handle);
    }

    //从创建对象中 释放异步操作句柄资源 事件查看窗口会会释放依赖的AB包
    if (Input.GetKeyDown(KeyCode.Q))
    {
        if (list.Count > 0)
        {
            Addressables.Release(list[0]);
            list.RemoveAt(0);
        }
    }
}

总结

事件查看窗口对于我们来说很有用。我们可以通过它来排查内存泄露相关的信息,比如场景中对象都被移除了,但是事件查看窗口中还有AB引用相关的信息,那证明存在内存泄露,可以排查加载和释放是否没有配对使用。



转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏