obsidian/笔记文件/2.笔记/Unity性能优化_第二章.md
2025-03-26 00:02:56 +08:00

3.1 KiB
Raw Blame History

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开始测试。