夏眠毁灭者 发表于 2025-8-24 16:20

有哪些常用的内存检测工具可以排查程序中的内存问题?

有哪些常用的内存检测工具可以排查程序中的内存问题?

xuanhuanzi 发表于 2025-8-26 14:44

编译器应该就可以检查是否越界和超额。

p0gon9y 发表于 2025-8-27 13:30

Valgrind(Linux 平台)通过其内置的 memcheck 工具检测内存泄漏、使用未初始化内存、访问已释放内存(野指针)、缓冲区溢出等问题。

q1ngt12 发表于 2025-8-27 13:30

AddressSanitizer(ASan,跨平台)可以检测缓冲区溢出(栈、堆、全局变量)、使用已释放内存、内存泄漏等,由编译器内置(Clang、GCC 4.8+、MSVC 2019+)。

lamanius 发表于 2025-8-27 13:31

LeakSanitizer(LSan,跨平台)专注于内存泄漏检测,常与 ASan 集成(Clang 默认启用,GCC 需显式指定 -fsanitize=leak)

l1uyn9b 发表于 2025-8-27 13:31

Dr. Memory支持跨平台,可以检测内存泄漏、未初始化内存访问、释放后使用、双重释放等,支持 Windows、Linux、macOS。

b5z1giu 发表于 2025-8-27 13:31

Visual Leak Detector针对 Visual Studio 开发环境的内存泄漏检测工具,集成到 MSVC 编译器中。使用简单(只需包含头文件 vld.h),能在程序退出时生成详细的泄漏报告(含调用栈),适合 Windows 下的 C/C++ 项目

suw12q 发表于 2025-8-27 13:32

jmap生成堆内存快照(jmap -dump:format=b,file=heap.bin <pid>),用于分析对象分布和内存泄漏。

g0d5xs 发表于 2025-8-27 13:32

jconsole/jvisualvm可视化监控工具,实时查看堆内存使用、线程状态,支持手动触发 GC 并分析内存变化。

ex7s4 发表于 2025-8-27 13:32

MAT(Memory Analyzer Tool)是基于 Eclipse 的堆内存分析工具,可解析 jmap 生成的快照,定位内存泄漏源头(如大对象、未释放的集合)。支持自动分析泄漏可疑点,生成支配树(Dominator Tree)展示对象引用关系,适合大型 Java 应用。

zhizia4f 发表于 2025-8-27 13:33

YourKit Java Profiler属于商业工具,支持内存泄漏检测、CPU 性能分析、线程分析,提供直观的内存使用趋势图表。性能损耗低(适合生产环境短期监控),支持远程分析分布式应用。

tax2r6c 发表于 2025-8-27 13:33

Tracemalloc,Python 3.4+ 内置模块,跟踪内存分配,记录每个对象的分配位置和大小。通过对比不同时间点的内存快照,定位内存增长的源头,适合简单场景的内存泄漏排查。

麻花油条 发表于 2025-8-27 15:53

Keil MDK-ARM + Memory Window适合ARM Cortex-M内核MCU。

duo点 发表于 2025-8-27 15:55

IAR Embedded Workbench + Data Log,Segger SystemView + J-Link

onlycook 发表于 2025-8-27 15:55

MCU内置硬件调试模块支持硬件调试接口。
页: [1]
查看完整版本: 有哪些常用的内存检测工具可以排查程序中的内存问题?