20.其他_窗口相关_事件查看窗口
20.1 知识点
事件查看窗口用来做什么
使用可寻址事件查看窗口可以监视可寻址资源的资源内存管理。
该窗口
- 显示应用程序何时加载和卸载资源
- 显示所有可寻址系统操作的引用计数
- 显示应用程序帧率和分配的内存总量近似图
我们可以通过它来检查可寻址资源对性能的影响,并检查没有释放的资源。
打开事件查看窗口
注意:使用事件查看窗口的前提要勾选AddressablesAssetSettings配置文件中的事件发送开关SendProfilerEvents
- Window > Asset Management > Addressables > Event Viewer
- 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