美文网首页VR圈程序员
Unity3d性能1:GC分析

Unity3d性能1:GC分析

作者: 老掌门CEO | 来源:发表于2017-08-29 23:41 被阅读363次

这段时间看了一些针对GC的文章,感觉应该整理一下。首先分析一个课题需要明确该课题的意义,定义,结论。通过本文阅读,可以解答如下问题:


1 GC是什么?

2 GC是如何产生的?

3 GC给u3d应用带来了什么问题?

4 在u3d中如何定位这些GC问题?

5 如何在u3d中解决GC带来的问题


1 GC是什么?

GC是.net框架中用来自动管理内存的机制。针对u3d来说,通常使用C#来编写。C#中存在值类型与引用类型,值类型存储在栈上,引用类型存储在托管堆上,对于栈上面的数值,一般是生命周期较短数据较小的,所以栈内存的管理无需理会,mono会自动的解决。那么剩下堆内存的管理,这就用到了GC。堆内存上面一般存储数据大而且生命周期不确定的数据,应用程序使用过程中需要不断的在堆内存上分配空间供新变量使用,当空间不足时,GC会调用,首先会查找堆内存上哪些对象已经不被应用或者其他对象调用了,然后把这些对象标记下来,再删除这些对象,这样就有了新的空间来分配,这就是GC的原理。


2 为什么会出现GC呢?

当我们明白了GC的原理之后,这个问题变得简单了。

1)当应用分配空间时,如果空间不足就会出现GC。

2)系统自动调用GC,不同平台频率不同。

3)GC强制调用,手动调用。


3 Mono的GC会给我们带来什么问题呢?

1)GC的时间问题: 如果堆内存上变量/引用/对象太多,GC执行的时候需要去遍历所有对象,检查该对象是否被用,导致GC缓慢,性能低下,应用卡顿迟缓。

2)内存碎片化严重:如果堆内存上空间碎片化严重,各个变量对象之间存在间隙,会导致应用无法分配大块的空间供较大的变量使用,此时系统会让GC频繁执行,或者让堆空间不断重新分配,导致性能低下。其实对内存碎片化严重是由于GC不断的执行导致的,当GC执行的时候,清理掉变量空出来的空间不会进行重组合并,导致可用变量之间存在间隙空白,这些空白虽然组合起来够用,但是它不会组合。


4 如何在u3d中定位GC问题?

在profiler window中CPU usage栏中的GC alloc选项就代表了每一项GC清理的垃圾,可以定位到具体的函数。


5 如何解决GC带来的问题?

本篇文章先讲解策略,下篇文章继续讲解常见问题。

方向上来讲,

1 GC时间的降低,

2 GC调用频率的降低,

3 GC延迟时间降低

4 尽量少的产生垃圾

5 场景加载的时候或者没有玩家操作的时候,手动执行GC。

相关文章

  • unity3d性能:GC分析2

    本文讲解针对GC的优化具体的操作,针对GC的产生以及原理不清晰的可以查看 unity3d性能:GC分析 文章。本文...

  • Unity3d性能1:GC分析

    这段时间看了一些针对GC的文章,感觉应该整理一下。首先分析一个课题需要明确该课题的意义,定义,结论。通过本文阅读,...

  • 2021-05-19【Unity】结构体GC相关

    结论 Unity3d 性能优化(GC篇) | 王在京同学 (peakcoder.com)[https://peak...

  • GC 日志分析工具列表

    gc日志分析工具 性能测试排查定位问题,分析调优过程中,会遇到要分析gc日志,人肉分析gc日志有时比较困难,相关图...

  • JVM相关 - SafePoint 与 Stop The Wor

    本文基于 OpenJDK 11 在分析线上 JVM 性能问题的时候,我们可能会碰到下面这些场景: 1.GC 本身没...

  • JVM性能调优

    一、性能调优目的 二、软件调优大致过程 查看内存和GC日志 调整新生代和老年代比例 性能分析 性能达标条件 Min...

  • Java虚拟机总结

    JVM体系四大块: 类的加载 JVM内存结构 GC算法 垃圾回收 GC分析 性能调优 执行引擎 JVM架构图 一、...

  • JVM(十一)内存与垃圾回收|垃圾回收器

    本文介绍垃圾回收器。 目录 1 GC的分类与性能指标  2 评估GC的性能指标  2.1 吞吐量  2.2 暂停时...

  • 1. 什么是GC性能-分代垃圾收集总览

    一. 什么是JVM的性能 1. 性能优化的两个目标: 吞吐量 : 总共的gc时间 单次停顿时间 : 因为gc导致服...

  • 诚意分享:SafePoint与StopTheWorld全解

    在分析线上 JVM 性能问题的时候,我们可能会碰到下面这些场景: 1.GC 本身没有花多长时间,但是 JVM 暂停...

网友评论

    本文标题:Unity3d性能1:GC分析

    本文链接:https://www.haomeiwen.com/subject/vnaadxtx.html