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

[复制链接]
423|14
夏眠毁灭者 发表于 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内置硬件调试模块支持硬件调试接口。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

40

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部