StoneのBLOG

生活这种事情,从来都是自我陶醉

0%

UE4-MemoryProfiler2的使用

是时候调查内存的使用情况了!这篇文章主要是介绍MemoryProfiler2的工具的使用。看看使用这个工具是如何查看UE4的内存使用情况。

Overview

主要是介绍Memory Profiler这个工具的使用。但是在介绍这个工具之前,如果只是想要简单快速的查看内存的使用,推荐使用MemReport -Full这个命令直接输出到文件。但是输出来的文件没有可视化的图表,看起来有些费眼睛。

还有一些其它的查看内存的工具放在最后说明。

Memory Profiler2

找到二进制启动文件

工欲善其事,必先利其器。首先我们需要知道如何启动MemoryProfiler2这个工具。

首先去\Engine\Programs\MemoryProfiler2\Binaries\MemoryProfiler2这个路径下看有没有这个启动文件。这里我默认都是使用的自定义引擎,不是Epic的Launcher上的引擎。

如果在编译UE4引擎源码的时候直接选的Build Solution,基本上会编译所有的内容,Memory Profiler2也会跟着被编译,所以会直接发现它的二进制启动文件。如果只编译了UE4的Solution的话,在上面的路径中就找不到启动器了,需要我们自己编译。

Engine/Source/Programs/MemoryProfiler2/MemoryProfiler2.sln这个路径,打开工程文件,右键Solution选择编译(Build),然后就会在上面的路径中找到编译完成的二进制启动文件了。

开启MemoryProfile设定

在Window64的情况下进行设定(复制粘贴的代码):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class TP_424Target : TargetRules
{
public TP_424Target(TargetInfo Target) : base(Target)
{
Type = TargetType.Game;
DefaultBuildSettings = BuildSettingsVersion.V2;

// 添加这一段到[Project].Target.cs文件
if (Target.Platform == UnrealTargetPlatform.Win64)
{
bUseMallocProfiler = true;
}
ExtraModuleNames.AddRange( new string[] { "TP_424" } );
}
}

还有另外两种方法,作为记录用也介绍一下,不作推荐。

  1. \Engine\Saved\UnrealBuildTool\BuildConfiguration.xml里面开启

    1
    2
    3
    4
    5
    6
    <?xml version="1.0" encoding="utf-8" ?>
    <Configuration xmlns="https://www.unrealengine.com/BuildConfiguration">
    <BuildConfiguration>
    <bUseMallocProfiler>true</bUseMallocProfiler>
    </BuildConfiguration>
    </Configuration>
  2. \Engine\Source\Programs\UnrealBuildTool\Configuration\TargetRules.cs里面开启

    1
    2
    3
    4
    5
    6

    /// <summary>
    /// If true, then enable memory profiling in the build (defines USE_MALLOC_PROFILER=1 and forces bOmitFramePointers=false).
    /// </summary>
    [XmlConfigFile(Category = "BuildConfiguration")]
    public bool bUseMallocProfiler = true;

这两种的实现方式都是一样的,选其一就可以。但是由于需要重新编译引擎源码,外加启动时会连Editor的资源一同算进去(据说是这样),我一开始尝试的就是这个方式,总之就是启动的时间超级长,文件的容量也很快变得非常大,故不做推荐。

Package设定

为了准确测量内存的使用量,将工程打包,一般都会选择大部分Debug功能都被摘除了的Test的BuildSolution进行打包,这个是最接近Shipping模式的BuildSolution。

别忘记Package项目设定下Include Debug Files要选上。

Profile

打包完毕之后启动打包项目。

Profile分析

关于为什么要使用Test打包:

参考资料:

其它内存调查工具

MemReport

关于如何使用这个命令

命令的项目解读(有时间需要整理):

Memory Insights