UE4内存检测工具使用

UE4提供了2个工具用于检测内存使用情况,这里记录下使用方法:

1.MemReport命令:

直接在UE4编辑器窗口的命令控制台上输入MemReport或MemReport -full即可得到内存分析报告。MemReport -full 会得到更加详细的分析报告。报告保存在Game/Saved/Profiling/MemReports目录下,文件格式为.memreport,使用文本编辑器就能打开查看。

MemReport这个指令可以在引擎目录下的\Engine\Config\BaseEngine.ini中查看并根据需要进行修改和定制。

MemReport的内存分析报告中包含了内存使用总量、对象列表和内存使用情况、Actor数量及信息等。我们可以隔一段时间使用MemReport统计一下内存,对比一下二者差异排查是否有内存泄漏。

2.MemoryProfiler工具:

这个工具需要手动编译一下,打开 Engine\Source\Programs\MemoryProfiler2\MemoryProfiler2.sln 工程文件,然后编译。编译完成后的可执行文件MemoryProfiler2.exe位于 Engine\Programs\MemoryProfiler2\Binaries 目录下。

打开Malloc Profiler有两种方式:

1)一种是在要编译的工程修改引擎和项目对应的xxx.Target.cs,在其构造函数中增加

bUseMallocProfiler = true;
bOmitFramePointers = false;
然后编译即可;

2)另外一种方式是在 Engine\Saved\UnrealBuildTool\BuildConfiguration.xml 文件中,修改 bUseMallocProfiler 为 true,bOmitFramePointers 为 false。但是这种方式是全局性的,包括Editor都会打开 Malloc Profiler,所以不太推荐使用。

在编辑器窗口的命令控制台上输入 MPROF MARK 生成内存快照,也可以 MPROF MARK SnapshotName 来给快照指定名称,输入 MPROF STOP 命令停止内存监控。快照会保存在 Game/Saved/Profiling/ 目录下生成以日期时间为后缀的目录,目录中包含 .mprof 内存记录文件。

UE4也支持通过埋点的方式记录需要关注的程序运行内存情况。先要在MallocProfiler.h文件中的 EProfilingPayloadSubType 的 SUBTYPE_LicenseeBase 后面添加一个枚举类型 SUBTYPE_MY_TEST_TAG = 51,然后在MallocProfiler.cpp文件 FmallocProfiler中 添加一个函数:

void FMallocProfiler::SnapshotMemoryMyTestTag(const FString& Tag)
{
    if (GMallocProfiler && !GMallocProfiler->bEndProfilingHasBeenCalled)
    {
        GMallocProfiler->SnapshotMemory(SUBTYPE_MY_TEST_TAG, Tag);
    }
}
最后在需要埋点的程序中插入代码即可:

MALLOC_PROFILER(FMallocProfiler::SnapshotMemoryMyTestTag(MyTest);)

运行上面生成的MemoryProfiler2.exe,点击File -> Open 打开 .mprof 文件,然后点击工具栏最后的 Go 按钮即可分析内存。

你可能感兴趣的:(UE4,unreal)