当前位置:  技术问答>linux和unix

请问如何检测自己的程序有没有内存泄漏?

    来源: 互联网  发布时间:2016-10-08

    本文导语:  如题 | valgrind是最著名的,类似的其他工具还有很多: 1.ccmalloc-Linux和Solaris下对C和C++程序的简单的使用内存泄漏和malloc调试库。 2.Dmalloc-Debug Malloc Library. 3.Electric Fence-Linux分发版中由Bruc...

如题

|
valgrind是最著名的,类似的其他工具还有很多:

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 Cachegrind and Calltree.
9.IBM Rational PurifyPlus-帮助开发人员查明C/C++、托管.NET、Java和VB6代码中的性能和可靠性错误。PurifyPlus 将内存错误和泄漏检测、应用程序性能描述、代码覆盖分析等功能组合在一个单一、完整的工具包中。
10.Parasoft Insure++-针对C/C++应用的运行时错误自动检测工具,它能够自动监测C/C++程序,发现其中存在着的内存破坏、内存泄漏、指针错误和I/O等错误。并通过使用一系列独特的技术(SCI技术和变异测试等),彻底的检查和测试我们的代码,精确定位错误的准确位置并给出详细的诊断信息。能作为Microsoft Visual C++的一个插件运行。
11.Compuware DevPartner for Visual C++ BoundsChecker Suite-为C++开发者设计的运行错误检测和调试工具软件。作为Microsoft Visual Studio和C++ 6.0的一个插件运行。
12.Electric Software GlowCode-包括内存泄漏检查,code profiler,函数调用跟踪等功能。给C++和.Net开发者提供完整的错误诊断,和运行时性能分析工具包。
13.Compuware DevPartner Java Edition-包含Java内存检测,代码覆盖率测试,代码性能测试,线程死锁,分布式应用等几大功能模块。
14.Quest JProbe-分析Java的内存泄漏。
15.ej-technologies JProfiler-一个全功能的Java剖析工具,专用于分析J2SE和J2EE应用程序。它把CPU、执行绪和内存的剖析组合在一个强大的应用中。JProfiler可提供许多IDE整合和应用服务器整合用途。JProfiler直觉式的GUI让你可以找到效能瓶颈、抓出内存泄漏、并解决执行绪的问题。4.3.2注册码:A-G666#76114F-1olm9mv1i5uuly#0126
16.BEA JRockit-用来诊断Java内存泄漏并指出根本原因,专门针对Intel平台并得到优化,能在Intel硬件上获得最高的性能。

附录:内存泄漏的发生方式
1.常发性内存泄漏。发生内存泄漏的代码会被多次执行到,每次被执行的时候都会导致一块内存泄漏。
2.偶发性内存泄漏。发生内存泄漏的代码只有在某些特定环境或操作过程下才会发生。常发性和偶发性是相对的。对于特定的环境,偶发性的也许就变成了常发性的。所以测试环境和测试方法对检测内存泄漏至关重要。
3.一次性内存泄漏。发生内存泄漏的代码只会被执行一次,或者由于算法上的缺陷,导致总会有一块且仅有一块内存发生泄漏。
4.隐式内存泄漏。程序在运行过程中不停的分配内存,但是直到结束的时候才释放内存。严格的说这里并没有发生内存泄漏,因为最终程序释放了所有申请的内存。但是对于一个服务器程序,需要运行几天,几周甚至几个月,不及时释放内存也可能导致最终耗尽系统的所有内存。所以,我们称这类内存泄漏为隐式内存泄漏。

原文:http://fafeng.blogbus.com/logs/7525571.html

PS:内存泄漏分析是一项比较复杂的工程,人对内存泄漏的深刻理解才是最重要的,因为工具有时候无法检测出内存泄漏。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/SAGITTARIUS_PIG/archive/2007/11/09/1876758.aspx

|
用Valgrind这样的工具来检测啊
用法请google

|
楼上太专业了,可以通过cat /proc/{pid}/status、maps和smaps观察内存占用变化情况。

    
 
 

您可能感兴趣的文章:

  • 请问我的linux的内存占用率怎么老是接近100%啊?
  • 请问在SOLARIS上怎么实时查看程序的内存使用状况??
  • 请问debug如何用l命令把硬盘的目录表调入内存?
  • 请问红帽linux7.0支持3G的内存吗?
  • 请问高手们,有没有一款工具可以测试内核内存泄露的?
  • 请问 AIX 对共享内存块数和每块的大小有什么限制。
  • 请问以root登录时(系统运行一会儿后)占用的内存为什么会激增?
  • sun机器一个一块内存和windows机器上一块内存的高低位相反,请问如何互相转换?
  • 急急急,请问如何检查C程序中内存泄露问题?
  • 请问:Linux的物理内存怎样看?
  • 请问怎么看LINUX的物理内存有多少?
  • 请问在Linux里,如何用JAVA读取内存里的PATH设置
  • 请问用GCC 编译,如何生成MAP文件?就是内存的分布映像文件?
  • 请问如何查看一个进程中 brk和mmap各自分配的内存空间的大小
  • 请问:在JAVA中创建句柄后,有没有给这个对象分配内存?
  • 急!!!请问有没有实时监测CPU、内存的占用情况以及网络流量系统调用?
  • 请问用什么命令或者什么方式可以查看到一个进程用了多少字节或者多少兆的内存???????????????????????????
  • 请问在UNIX上如何看一个进程的内存使用情况?
  • 请问能否在linux实现一个应用程序访问另外一个程序的内存数据?
  • 请问一个共享内存的问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请问如何在shell脚本中检测一个环境变量是否已经设置
  • 请问linux有什么函数能检测到我是否拔掉了网线还是没有?
  • 请问Linux C代码规范性检测工具有哪些?
  • 请问linux下程序中如何检测移动硬盘的插入拔除?
  • 请问不同unix平台推荐的内存泄露检测工具?
  • 请问大侠们怎么检测session对象某个变量负了值!!??比如^
  • 请问linux下Server端程序怎么检测到Client拔掉网线的情况?好像收不到连接断开或错误事件!
  • 为什么我在安装linux9的时候,机器检测硬件的时候,出现“超频保护中”的提示,请问大家有没有碰到此类的问题
  • linux启动时出现文件系统检测错误,请问如何解决?谢谢
  • 请问如何在JSP中检测重复的输入,并用JavaScript的alert方法提示?
  • 请问:我知道路由器的telnet密码,但忘记了enable 密码,请问如何是好?
  • 请问那里有SYBASE的jbdb 2.0下载;jspsmartupload可以直接将文件上传到数据库,请问如何使用
  • 请问最新的reahat9.0是基于什么核心的?2.4?2.6?请问那里能下载?
  • 请问:请问哪里有关于linux基本操作命令讲解的资料下载,最好是幻灯片格式的.
  • 请问,我试图用#admintool&图形工具命令来安装sun workshop5.0,为什么进入的却是用户管理界面?请问具体该如何在solaris下安装应用软件
  • 请问在Redhat 9里,我从登录就是图形介面,请问如何在图形介面内进入命令行方式呢,谢谢
  • 请问玩过SOLARIS的高手门,在不正常关机后,就不能启动到windows公用桌面了,只能在命令提示模式下了,请问怎么解决这个问题啊?急~!~!
  • 请问:我在redhat下装了bochs-2.2.1-1.rpm,.装了后,想设置一下,但找不到bochsrc.fda.bxrc,请问这个文件在哪个曰录下啊。
  • 请问:在配置Qt时,很多文档都说在.profile,.login里加东西,但是我好像没有发现有这两个文件上,请问这些文件在哪个目录下啊
  • 请问:在GCC里的C程序里的变量的声明是不是只能在前面,而且相同类型的变量的声明只能放在一起?如果不是,请问怎么样可以解决这个问题.
  • 请问各位大虾,小弟今天开始学jsp了,这学期我们有java课,所以已经下载了jdk(好象是1.2),请问我的98环境怎么配置jsp环境呀?我的jdk可以运行.java程序,别的我就不知道了....谢谢!
  • 主机是WIN2000,我用的是LUNIX,请问是否可以共享上网? 如果可以请问如何设置? 500分答谢,龟儿食言!
  • 请问linux下GUI开发的问题!
  • 请问出现fstab文件丢失该怎么修复呀?
  • 请问这个方法如何调用?
  • 请问一个奇怪的问题!
  • 请问在网页中打开的新窗口,如何让其居中。
  • 请问我该学什么了
  • 请问安装zhcon,cxterm问题
  • 非常急! 请问daemontools 在red hat 9下的安装问题? 在线等待


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3