GC调用
优质
小牛编辑
132浏览
2023-12-01
一般来说,使用Unity引擎开发的项目中,其内存分配主要由三部分组成:程序代码、托管堆(Managed Heap)以及本机堆(Native Heap)。其中,对于目前绝大多数基于Unity引擎开发的项目而言,其托管堆是由Mono分配和管理的。“托管” 的本意是Mono可以自动地改变堆的大小来适应你所需要的内存,并且适时地调用垃圾回收(Garbage Collection)操作来释放已经不需要的内存,从而来降低开发人员在代码内存管理方面的门槛。
需要注意的是,每次GC调用均会造成一定程度上的卡顿,从而降低项目运行的流畅度。如果开发人员的逻辑代码分配堆内存过大过快的话,则GC调用的次数也会随之增加。因此,我们在项目运行过程中着重对GC调用情况进行了详细的检测,以求让您对项目中的GC调用有全面的了解,并及时对逻辑代码进行优化。
该页面主要展示项目运行过程中详细的系统GC调用情况,主要包括以下几个部分:
数据汇总
该项主要展示项目运行过程中的 “调用次数”、“调用频率”、“总耗时” 和 “平均耗时”。其中,“调用次数” 为项目运行过程中Mono调用GC操作的次数;“调用频率” 为项目运行时平均多少帧会触发一次GC操作。该值越低,则表示GC到来的越快,即项目越不流畅;“总耗时” 和 “平均耗时” 则表示GC操作的所有CPU时间总和和平均每次的CPU时间。
GC耗时分布
该项主要展示项目运行过程中GC的耗时分布。您可以通过与图表交互(鼠标点击、键盘方向键等),查看每一次GC调用时的具体CPU占用和对应的场景名称和帧数等。
GC调用详情
该项主要显示GC调用的具体情况,包括触发帧数、具体CPU占用和触发函数等。通过该项,您可以获取项目运行时触发GC操作的所有函数调用。