在运行我的游戏时,我看了一下分析器,我可以在那里看很多东西--但我的脚本的内存使用情况却不是这样。问题是,我的游戏的总内存分配是223 MB,但纹理只有112和1到2 MB,我看到的除外。我不知道我的其他100 MB内存去了哪里,我想优化一下我的脚本。附带注意:我使用编写代码。也许我该看看那里?
发布于 2017-01-20 19:23:34
这里有几个内存分析提示,我已经从联合发布的应用中学到了。
GC ALLOC
在Unity窗口的CPU使用视图中,您可以看到脚本在任何给定帧中分配了多少内存。这在GC (垃圾收集分配)列中显示。
这不会为您提供单个脚本的内存使用总量,但它对于提高性能和内存消耗非常有用。如果脚本分配每个帧,则内存将继续累积,直到垃圾收集器被触发为止。这种累积会增加内存占用,运行GC会导致性能下降。
有关更多信息,请参见这里:https://docs.unity3d.com/Manual/ProfilerCPU.html
内存视图
Unity窗口的详细内存视图告诉您游戏中加载的任何内容(包括大量内置资产)的内存使用情况。这将使您能够识别哪些纹理、网格或其他资产过大。当您查看此视图中的资产时,它会告诉您在场景中引用它的位置,这可以帮助您识别哪些游戏对象可能使用过多的内存。
这个观点的一个问题是,许多资产都是空白的,因为它们没有名字。当您创建其他资产(纹理、网格等)时,会发生这种情况。在脚本中,您可以通过设置您创建的任何资产的.name属性来更改此属性。这将显示在内存分析器窗口中。
有关更多信息,请参见这里:https://docs.unity3d.com/Manual/ProfilerMemory.html
建设报告
执行构建后(独立、Windows等)在编辑器日志中生成生成报告。它可能很难找到,但它提供了许多良好的信息,哪些资产正在对您的构建规模作出贡献。需要记住的一点是,这个报告使用的是未压缩的非压缩资产大小,因此许多类型的资产(特别是纹理)实际上会比这里显示的要小。在控制台窗口的右上角,有一个下拉菜单来打开编辑器日志。您感兴趣的部分如下所示:
Textures 0.0 kb 0.0%
Meshes 0.0 kb 0.0%
Animations 0.0 kb 0.0%
Sounds 0.0 kb 0.0%
Shaders 18.6 kb 0.4%
Other Assets 0.7 kb 0.0%
Levels 5.2 kb 0.1%
Scripts 460.8 kb 10.2%
Included DLLs 3.9 mb 89.1%
File headers 8.4 kb 0.2%
Complete size 4.4 mb 100.0%
Used Assets and files from the Resources folder, sorted by uncompressed size:
18.9 kb 0.4% Resources/unity_builtin_extra
4.0 kb 0.1% ...UnityEngine.UI.dll
1.8 kb 0.0% ...UnityEngine.Networking.dll
0.1 kb 0.0% ...UnityEngine.Advertisements.dll
0.1 kb 0.0% ...UnityEngine.Purchasing.dll
0.1 kb 0.0% Assets/TestClass.cs
0.1 kb 0.0% Assets/MemoryTester.cs
0.1 kb 0.0% Assets/Rotator.cs对于懒人,资产存储中有一个Unity,它可以为您解析以下内容:https://www.assetstore.unity3d.com/en/#!/content/8162
(我既没有用过这句话,也没有赞同它的用法)
System.GC.GetTotalMemory
如果您正在Windows上开发,您可以使用System.GC.GetTotalMemory(...). The向系统询问它认为分配给您的应用程序的内存量--实际上,它的编号--它的报告可能对您不感兴趣,但是如果您在应用程序的各个点对此功能进行调用,则可以看到内存总使用量上升时的情况。例如,您可能会在一个大的初始化块之前调用GetTotalMemory,然后在初始化结束时再次调用。比较这两个数字,你就可以估计出你的记忆增长了多少*
*它可能不完全准确,因为背景中有一些过程,如GC,可能会影响这个数字。
有关更多信息,请参见这里:https://msdn.microsoft.com/en-us/library/system.gc(v=vs.110).aspx
希望这能帮上忙!!
https://stackoverflow.com/questions/41768846
复制相似问题