Unity性能优化_第二章
C#托管内存、非托管内存、托管堆
托管内存是由垃圾回收器自动管理的内存,当达到一定量时,会由垃圾回收器自动释放它们。
托管内存存放在托管堆中。托管堆是一种用于存储和管理托管对象的内存区域。每当创建一个新的托管对象时,托管堆就会分配内存空间给这个对象,并记录这个对象的信息。当托管对象不再被引用,垃圾回收器会自动将其标记为垃圾,并在适当的时候回收其占用的内存空间。
非托管内存不会自动被回收,它们需要我们程序员写代码去管理和释放它们。
非托管内存并不固定存储在一个地方,它们往往分散存储在不同的地方,例如操作系统的内存、临时缓冲区等。
Unity Code Coverage窗口
Code Coverage用来评估我们编写的代码,在游戏测试运行的时候有多少被执行了。如果有一部分代码没有被执行,我们就要考虑是不是我们代码的逻辑有问题,从而改进我们的代码。
打开方法:Window——Analysic——Code Coverage
官方文档:https://docs.unity.cn/Packages/com.unity.testtools.codecoverage@1.1/manual/index.html
使用思路: 先勾选Enable Code Coverage,然后勾选Auto Generate Report,再点击Start Recording按钮,接着点击播放按钮运行游戏。点击Start Recording按钮后,它会变成Stop Recording,测试完毕后点击它,就会停止测试。然后我们就可以在Result Location的路径找到生成的报告,从中看出在测试的时候有多少代码被执行了。
Results Location表示生成的报告要存放到的路径。
History Location表示生成的报告的历史记录要存放到的路径。必须勾选了Generate History才会生成。
Enable Code Coverage表示启用代码覆盖,测试之前要勾选它。
Included Assemblies表示测试的时候要考虑哪些程序集的代码。
Included Paths表示测试的时候要考虑哪些文件夹或文件中的代码。
Excluded Paths表示测试的时候不考虑哪些文件夹或文件中的代码。
Generate HTML Report,勾选后,生成报告时,会以html的格式来生成报告。如果取消勾选,则会以其它形式来生成报告,但是这样不方便我们观看。建议勾选。
Generate Summary Badges,勾选后,生成的报告的文件夹中,会额外生成.svg和.png后缀的文件,概括这次测试中有百分之几的代码被使用了。
Generate History,勾选后,生成报告时,会自动在History Location的路径生成历史记录。
Generate Additional Metrics,勾选后,生成报告时,报告中会有额外的衡量指标。
Auto Generate Report,勾选后,我们点击Start Recording开始测试,然后点击Stop Recording结束测试后,会自动在Results Location的路径生成报告。
Clear Data清空上一次测试的数据。
Clear History,清空History Location路径中的所有历史记录。
Generate from Last,根据上一次测试的数据,在Results Location的路径生成报告。
Start Recording,开始测试。