概述
UE4提供了2个工具用于检测内存使用情况,这里记录下使用方法:
1.MemReport命令:
直接在UE4编辑器窗口的命令控制台上输入MemReport或MemReport -full即可得到内存分析报告。MemReport -full 会得到更加详细的分析报告。报告保存在Game/Saved/Profiling/MemReports目录下,文件格式为.memreport,使用文本编辑器就能打开查看。
MemReport这个指令可以在引擎目录下的EngineConfigBaseEngine.ini中查看并根据需要进行修改和定制。
MemReport的内存分析报告中包含了内存使用总量、对象列表和内存使用情况、Actor数量及信息等。我们可以隔一段时间使用MemReport统计一下内存,对比一下二者差异排查是否有内存泄漏。
2.MemoryProfiler工具:
这个工具需要手动编译一下,打开 EngineSourceProgramsMemoryProfiler2MemoryProfiler2.sln 工程文件,然后编译。编译完成后的可执行文件MemoryProfiler2.exe位于 EngineProgramsMemoryProfiler2Binaries 目录下。
打开Malloc Profiler有两种方式:
1)一种是在要编译的工程修改引擎和项目对应的xxx.Target.cs,在其构造函数中增加
bUseMallocProfiler = true;
bOmitFramePointers = false;
然后编译即可;
2)另外一种方式是在 EngineSavedUnrealBuildToolBuildConfiguration.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内存检测工具使用的全部内容,希望文章能够帮你解决UE4内存检测工具使用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复