问题记录——UI网格重建造成Mono内存飙升

  • 网格重建造成Mono内存飙升
    ReservedMono峰值(MB) 373.6 >> 80 (官方建议值)
    • 峰值
      出现在下图页面关闭帧 Mono内存从46M升值246M,一段时间后又在某一帧增加了50+M,到达300+M峰值
      问题记录——UI网格重建造成Mono内存飙升_第1张图片

    • 函数堆栈
      在两次Mono内存激增的问题帧中都是由于下图的ScrollRect.LateUpdate/Layout方法产生了巨额GC
      在这里插入图片描述

    • 原因推测
      ScrollRect.LateUpdate/Layout 该方法的作用过程是

      • 遍历LayoutQueue队列(内含被标脏的ScrollRect/Scrollbar等)和GraphicQueue队列(内含被标脏的Graphic/InputField等)
      • 过滤掉其中的无效元素,调用剩余元素的Rebuild接口,更新元素的几何及网格信息
      • 其中遍历完LayoutQueue队列后会触发Cull操作

      故推测出现原因是某些原因(重点关注Canvas变化)造成UI元素的大范围重建,可从这点切入尝试排查。

你可能感兴趣的:(问题记录)