Cocos Creator:本机引擎内存泄漏检测系统

推荐:将NSDT场景编辑器加入你的3D工具链
3D工具集:NSDT简石数字孪生

本机引擎内存泄漏检测系统

本机引擎是使用 C++ 语言开发的。为了方便游戏和引擎开发者快速发现内存泄漏,Cocos Creator 从 v3.4.0 开始提供了内存泄漏检测系统

与其他内存泄漏检测工具相比,Cocos Creator 中内置的内存泄漏检测工具具有以下优点:

  • 平台:支持Windows/Android/Mac/iOS平台。
  • 易于使用:无需下载其他工具并执行复杂的配置。支持在内存泄漏处输出堆栈信息,方便快速定位泄漏。
  • 一致性:每个平台的使用流程几乎相同:从IDE启动游戏->运行一段时间->关闭游戏->查看IDE输出日志。
  • 实时:虽然游戏在性能分析模式下的帧率有所下降,但仍保持实时运行帧率。
  • 准确性:理论上为零误报。

使用步骤

默认情况下,内存泄漏检测系统处于禁用状态。要启用它,您需要将引擎目录文件中宏的值修改为 1USE_MEMORY_LEAK_DETECTORengine/native/cocos/base/Config.h

 #ifndef USE_MEMORY_LEAK_DETECTOR
     #define USE_MEMORY_LEAK_DETECTOR 1
 #endif

由于平台之间的实现机制不同,Android 平台需要额外的步骤:

将一行代码添加到项目目录中的文件,如下所示:set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -finstrument-functions")native/engine/android/CMakeLists.txt

 set(CC_PROJ_SOURCES)
 set(CC_COMMON_SOURCES)
 set(CC_ALL_SOURCES)

 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -finstrument-functions")

从原生平台对应的IDE启动游戏(如Visual Studio、Android Studio、Xcode),运行一段时间后关闭游戏。如果存在内存泄漏,此时将在 IDE 的输出窗口中输出内存泄漏的详细信息。

视窗平台

视觉工作室

在发布版本中,如果需要更友好的堆栈信息,请右键单击可执行项目属性,打开项目属性页,然后进行以下设置:

  • 链接器 -> 调试 -> 生成调试信息:生成调试信息(/DEBUG)
  • C/C++ -> 优化 -> 优化:禁用(/od)\
  • C/C++ ->优化 -> 内联函数扩展:禁用(/ob0)

安卓平台

安卓工作室

Mac/iOS 平台

xcode

根据原生平台 IDE 输出的信息修复泄漏,重复直到没有泄漏。

3D建模学习工作室 翻译整理,转载请注明出处

上一篇:Cocos Creator:CMake 使用介绍 (mvrlink.com)

下一篇:Cocos Creator:原生场景剔除 (mvrlink.com)

NSDT场景编辑器 | NSDT 数字孪生 | GLTF在线编辑器 | 3D模型在线转换 | UnrealSynth虚幻合成数据生成器 | 3D模型自动纹理化工具
2023 power by nsdt©鄂ICP备2023000829号