内存泄漏检测工具 (内存泄漏检测工具linux)
本文目录导航:
内存泄漏检测工具
以下是改写后的文章内容:
在寻找内存泄漏检测工具时,有多种实用的解决方案可供选择。
首先,ccmalloc是一个针对Linux和Solaris平台的简单C和C++程序内存泄漏调试库。
它为开发者提供了基本的内存管理监控。

接下来是Dmalloc,一个Debug Malloc Library,专为深入内存管理问题设计,尤其适用于需要高度调试的场景。
它提供了详细的内存分配和释放跟踪。
Linux上的Electric Fence,由Bruce Perens编写的malloc()调试库,为开发者提供了额外的内存管理保护,帮助识别潜在的内存泄漏。
Leaky是Linux下的一款内存泄漏检测程序,专门用于识别和处理内存泄漏问题。
它的使用直观且有效。
LeakTracer则是一款跨平台工具,适用于Linux、Solaris和HP-UX,特别适用于C++程序的内存泄漏跟踪和分析。
MEMWATCH,由Johan Lindh开发,是一个开源的C语言内存错误检测工具,通过gcc预处理器实现,有助于发现和修复内存问题。
Valgrind是一款广泛使用的工具,专注于调试和分析C和C++程序,对于内存泄漏和其他性能问题的诊断非常强大。
KCachegrind作为Valgrind的可视化工具,可以深入理解Cachegrind和Calltree生成的性能数据。
IBM Rational PurifyPlus是一个全面的工具包,集成了内存错误和泄漏检测、性能描述和代码覆盖率分析等功能,尤其适用于C/C++、、Java和VB6代码。
Parasoft Insure++是一款针对C/C++应用的运行时错误检测工具,能自动检测内存破坏、内存泄漏、指针错误等,并提供详细的诊断信息。
Compuware DevPartner的BoundsChecker Suite是一款针对C++的运行错误检测和调试插件,适用于Microsoft Visual Studio环境。
Electric Software的GlowCode不仅包括内存泄漏检查,还提供代码profiler和函数跟踪等功能,为C++和开发者提供全面的错误诊断和性能分析。
Compuware的Java Edition则专注于Java应用,包含了内存检测、代码覆盖率测试等多个功能模块。
Quest的JProbe专注于Java内存泄漏分析,提供深入的Java应用程序剖析。
ej-technologies的JProfiler是一款全面的Java分析工具,结合了CPU、线程和内存剖析,适用于J2SE和J2EE应用。
最后,BEA的JRockit专门针对Intel平台进行优化,用于诊断Java内存泄漏,并提供高效的性能分析。
扩展资料
内存泄漏也称作“存储渗漏”,用动态存储分配函数动态开辟的空间,在使用完毕后未释放,结果导致一直占据该内存单元。
直到程序结束。
即所谓内存泄漏。
内存泄漏也可以这样查
内存泄漏是C或C++编程中常见的问题之一,对于这类问题,我们通常依赖于诸如valgrind和AScan等内存检测工具。
然而,valgrind的输出可能过于冗杂,AScan的解析结果也常常令人费解。
幸运的是,还有其他工具可以供我们选择,比如smem。
smem是一个基于Python的小型工具,能够帮助我们统计系统中所有进程的物理内存(RSS)、去共享内存后的进程内存(PSS),以及程序本身的独占内存(USS)。
安装smem相对简单,常用命令包括显示内存单位、按用户查看内存占用、显示系统内存总体情况及按照独占内存大小排序展示内存占用情况等。
通过排序命令,我们可以重点关注占用内存持续增加的进程,借此发现内存泄漏的问题。
为了直观地展示内存泄漏的检查过程,我们以一个简单的程序为例。
程序中的内存泄漏问题可以通过smem命令的排序功能和watch命令的使用来监控。
watch命令每5秒执行一次命令,高亮显示内存占用变化的部分,帮助我们迅速识别内存泄漏迹象。
在使用memleak工具时,我们发现了一个内存泄漏问题,并通过修改代码解决了该问题。
memleak工具能够显示泄漏的字节数,而修复代码后,我们再次使用memleak检查,结果显示内存泄漏问题已经得到解决。
除此之外,gdb工具也可以用来检查函数中的内存泄漏。
通过修改代码中的循环条件,我们可以观察到内存分配的增加情况,从而判断是否存在内存泄漏。
在free函数执行后,内存占用情况会相应减少,验证了内存泄漏是否已被有效修复。
Windows 下有哪些内存泄露监测工具
1. ccmalloc-Linux和Solaris下对C和C++程序的简单的使用内存泄漏和malloc调试库。
2. Dmalloc-Debug Malloc Library.3. Electric Fence-Linux分发版中由Bruce Perens编写的malloc()调试库。
4. Leaky-Linux下检测内存泄漏的程序。
5. LeakTracer-Linux、Solaris和HP-UX下跟踪和分析C++程序中的内存泄漏。
6. MEMWATCH-由Johan Lindh编写,是一个开放源代码C语言内存错误检测工具,主要是通过gcc的precessor来进行。
7. Valgrind-Debugging and profiling Linux programs, aiming at programs written in C and C++.8. KCachegrind-A visualization tool for the profiling data generated by Cachegrindand Calltree.9. Leak Monitor-一个Firefox扩展,能找出跟Firefox相关的泄漏类型。
10. IE Leak Detector (Drip/IE Sieve)-Drip和IE Sieve leak detectors帮助网页开发员提升动态网页性能通过报告可避免的因为IE局限的内存泄漏。
11. Windows Leaks Detector-探测任何Win32应用程序中的任何资源泄漏(内存,句柄等),基于Win API调用钩子。
12. SAP Memory Analyzer-是一款开源的JAVA内存分析软件,可用于辅助查找JAVA程序的内存泄漏,能容易找到大块内存并验证谁在一直占用它,它是基于Eclipse RCP(Rich Client Platform),可以下载RCP的独立版本或者Eclipse的插件。
13. DTrace-即动态跟踪Dynamic Tracing,是一款开源软件,能在Unix类似平台运行,用户能够动态检测操作系统内核和用户进程,以更精确地掌握系统的资源使用状况,提高系统性能,减少支持成本,并进行有效的调节。
14. IBM Rational PurifyPlus-帮助开发人员查明C/C++、托管、Java和VB6代码中的性能和可靠性错误。
PurifyPlus 将内存错误和泄漏检测、应用程序性能描述、代码覆盖分析等功能组合在一个单一、完整的工具包中。
15. Parasoft Insure++-针对C/C++应用的运行时错误自动检测工具,它能够自动监测C/C++程序,发现其中存在着的内存破坏、内存泄漏、指针错误和I/O等错误。
并通过使用一系列独特的技术(SCI技术和变异测试等),彻底的检查和测试我们的代码,精确定位错误的准确位置并给出详细的诊断信息。
能作为Microsoft Visual C++的一个插件运行。
16. Compuware DevPartner for Visual C++ BoundsChecker Suite-为C++开发者设计的运行错误检测和调试工具软件。
作为Microsoft Visual Studio和C++ 6.0的一个插件运行。
17. Electric Software GlowCode-包括内存泄漏检查,code profiler,函数调用跟踪等功能。
给C++和开发者提供完整的错误诊断,和运行时性能分析工具包。
18. Compuware DevPartner Java Edition-包含Java内存检测,代码覆盖率测试,代码性能测试,线程死锁,分布式应用等几大功能模块。
19. Quest JProbe-分析Java的内存泄漏。
20. ej-technologies JProfiler-一个全功能的Java剖析工具,专用于分析J2SE和J2EE应用程序。
它把CPU、执行绪和内存的剖析组合在一个强大的应用中。
JProfiler可提供许多IDE整合和应用服务器整合用途。
JProfiler直觉式的GUI让你可以找到效能瓶颈、抓出内存泄漏、并解决执行绪的问题。
4.3.2注册码:A-G666#F-1olm9mv1i5uuly#. BEA JRockit-用来诊断Java内存泄漏并指出根本原因,专门针对Intel平台并得到优化,能在Intel硬件上获得最高的性能。
22. SciTech Software AB Memory Profiler-找到内存泄漏并优化内存使用针对C#,,或其它程序。
23. YourKit & Java Profiler-业界领先的Java和程序性能分析工具。
24. AutomatedQA AQTime-AutomatedQA的获奖产品performance profiling和memory debugging工具集的下一代替换产品,支持Microsoft, Borland, Intel, Compaq 和 GNU编译器。
可以为和Windows程序生成全面细致的报告,从而帮助您轻松隔离并排除代码中含有的性能问题和内存/资源泄露问题。
支持 1.0,1.1,2.0,3.0和Windows 32/64位应用程序。
25. JavaScript Memory Leak Detector-微软全球产品开发欧洲团队(Global Product Development- Europe team, GPDE) 发布的一款调试工具,用来探测JavaScript代码中的内存泄漏,运行为IE系列的一个插件。