creator-泄漏检测之js篇

creator-泄漏检测之js篇


前篇

一下使用 ui 作为测试, 正常情况下, 反复打开关闭一个 ui, ui 实例是要被回收的


测试 01 - 正常回收

  1. 这里打了3个快照, 1 是未加载 ui, 2 是加载了 ui, 3 是销毁了 ui

    image-20230328162537307

  2. 将 快照2 与 快照1 对比

    image-20230328162557112

    加载 ui 后, 增加了一个 ui 实例 (UIPnlxxx 就是 UI 的类名的前缀)

  3. 将 快照3 与 快照2 对比

    image-20230328162621166

    销毁 ui 后, 减少了一个 ui 实例

  4. 将 快照3 与 快照1 对比

    image-20230328162647950

    没有 ui 实例, 说明 ui 实例对象被正常回收了


测试 02 - 模拟泄漏

  1. 故意在 ui 初始化是, 注册事件, 这样事件系统就可以引用住这个实例

    image-20230328162731030

  2. ui 操作和上面一直, 直接将 快照3 与 快照1 对比

    image-20230328162749234

    可以看到 ui 实例并没有被销毁, 如果继续反复打开销毁 ui, 可以看到这个数会一直增加, 说明泄漏了

  3. 展开这个 ui 类, 点击 ui 实例, 可以看到下面 Retainers 栏里, 这个 ui 实例的引用链, 可以看到被事件系统引用了

    image-20230328162833823