怎样测试电脑内存泄漏情况(怎么检查内存泄漏)

1. 怎么检查内存泄漏

您好,很高兴为您解答。

怎样检测内存泄露:

检测内存泄漏的关键是要能截获住对分配内存和释放内存的函数的调用。截获住这两个函数,我们就能跟踪每一块内存的生命周期,比如,每当成功的分配一块内存后,就把它的指针加入一个全局的list中;每当释放一块内存,再把它的指针从list中删除。这样,当程序结束的时候,list中剩余的指针就是指向那些没有被释放的内存。这里只是简单的描述了检测内存泄漏的基本原理,详细的算法可以参见SteveMaguire的>。

如果要检测堆内存的泄漏,那么需要截获住malloc/realloc/free和new/delete就可以了(其实new/delete最终也是用malloc/free的,所以只要截获前面一组即可)。对于其他的泄漏,可以采用类似的方法,截获住相应的分配和释放函数。比如,要检测BSTR的泄漏,就需要截获SysAllocString/SysFreeString;要检测HMENU的泄漏,就需要截获CreateMenu/DestroyMenu。(有的资源的分配函数有多个,释放函数只有一个,比如,SysAllocStringLen也可以用来分配BSTR,这时就需要截获多个分配函数)

在Windows平台下,检测内存泄漏的工具常用的一般有三种,MSC-RuntimeLibrary内建的检测功能;外挂式的检测工具,诸如,Purify,BoundsChecker等;利用WindowsNT自带的PerformanceMonitor。这三种工具各有优缺点,MSC-RuntimeLibrary虽然功能上较之外挂式的工具要弱,但是它是免费的;PerformanceMonitor虽然无法标示出发生问题的代码,但是它能检测出隐式的内存泄漏的存在,这是其他两类工具无能为力的地方。

2. 如何查找内存泄漏

内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,失去了对该段内存的控制,因而造成了内存的浪费。

可以使用相应的软件测试工具对软件进行检测。

1.ccmalloc-Linux和Solaris下对C和C++程序的简单的使用内存泄漏和malloc调试库。

2.Dmalloc-DebugMallocLibrary.

3.Electric

Fence-Linux分发版中由BrucePerens编写的malloc()调试库。

4.Leaky-Linux下检测内存泄漏的程序。

5.LeakTracer-Linux、Solaris和HP-UX下跟踪和分析C++程序中的内存泄漏。

6.MEMWATCH-由Johan

Lindh编写,是一个开放源代码C语言内存错误检测工具,主要是通过gcc的precessor来进行。

7.Valgrind-DebuggingandprofilingLinuxprograms,aimingat

programswritteninCandC++.

8.KCachegrind-Avisualizationtoolfortheprofilingdata

generatedbyCachegrindandCalltree.

9.Leak

Monitor-一个Firefox扩展,能找出跟Firefox相关的泄漏类型。

10.IELeakDetector

(Drip/IESieve)-Drip和IESieveleak

detectors帮助网页开发员提升动态网页性能通过报告可避免的因为IE局限的内存泄漏。

11.WindowsLeaks

Detector-探测任何Win32应用程序中的任何资源泄漏(内存,句柄等),基于WinAPI调用钩子。

12.SAPMemory

Analyzer-是一款开源的JAVA内存分析软件,可用于辅助查找JAVA程序的内存泄漏,能容易找到大块内存并验证谁在一直占用它,它是基于Eclipse

RCP(RichClientPlatform),可以下载RCP的独立版本或者Eclipse的插件。

13.DTrace-即动态跟踪Dynamic

Tracing,是一款开源软件,能在Unix类似平台运行,用户能够动态检测操作系统内核和用户进程,以更精确地掌握系统的资源使用状况,提高系统性能,减少支持成本,并进行有效的调节。

14.IBMRationalPurifyPlus-帮助开发人员查明C/C++、托管.NET、Java和VB6代码中的性能和可靠性错误。PurifyPlus

将内存错误和泄漏检测、应用程序性能描述、代码覆盖分析等功能组合在一个单一、完整的工具包中。

15.ParasoftInsure++-针对C/C++应用的运行时错误自动检测工具,它能够自动监测C/C++程序,发现其中存在着的内存破坏、内存泄漏、指针错误和I/O等错误。并通过使用一系列独特的技术(SCI技术和变异测试等),彻底的检查和测试我们的代码,精确定位错误的准确位置并给出详细的诊断信息。能作为Microsoft

VisualC++的一个插件运行。

16.CompuwareDevPartnerforVisualC++BoundsChecker

Suite-为C++开发者设计的运行错误检测和调试工具软件。作为MicrosoftVisualStudio和C++6.0的一个插件运行。

17.ElectricSoftwareGlowCode-包括内存泄漏检查,code

profiler,函数调用跟踪等功能。给C++和.Net开发者提供完整的错误诊断,和运行时性能分析工具包。

18.CompuwareDevPartnerJava

Edition-包含Java内存检测,代码覆盖率测试,代码性能测试,线程死锁,分布式应用等几大功能模块。

19.QuestJProbe-分析Java的内存泄漏。

20.ej-technologiesJProfiler-一个全功能的Java剖析工具,专用于分析J2SE和J2EE应用程序。它把CPU、执行绪和内存的剖析组合在一个强大的应用中。JProfiler可提供许多IDE整合和应用服务器整合用途。JProfiler直觉式的GUI让你可以找到效能瓶颈、抓出内存泄漏、并解决执行绪的问题。4.3.2注册码:A-G666#76114F-1olm9mv1i5uuly#0126

21.BEAJRockit-用来诊断Java内存泄漏并指出根本原因,专门针对Intel平台并得到优化,能在Intel硬件上获得最高的性能。

22.SciTechSoftwareAB.NETMemory

Profiler-找到内存泄漏并优化内存使用针对C#,VB.Net,或其它.Net程序。

23.YourKit.NET&JavaProfiler-业界领先的Java和.NET程序性能分析工具。

24.AutomatedQAAQTime-AutomatedQA的获奖产品performanceprofiling和memory

debugging工具集的下一代替换产品,支持Microsoft,Borland,Intel,Compaq和

GNU编译器。可以为.NET和Windows程序生成全面细致的报告,从而帮助您轻松隔离并排除代码中含有的性能问题和内存/资源泄露问题。支持.Net

1.0,1.1,2.0,3.0和Windows32/64位应用程序。

25.JavaScriptMemoryLeakDetector-微软全球产品开发欧洲团队(GlobalProduct

Development-Europeteam,GPDE)

发布的一款调试工具,用来探测JavaScript代码中的内存泄漏,运行为IE系列的一个插件。

3. 怎么检查内存泄漏问题

共享内存(Shared Memory)一般指的是操作系统提供的一种用于进程间通信的方式,你说的那东西叫内存池(Memory Pool),比如Nginx

就使用了内存池。

内存池的主要作用不是防止内存泄漏,反而是内存池不容易通过valgrind这种工具检查内存泄漏,比如你从内存池里取出一块内存,然后忘记还给内存池了,这不就是内存泄漏吗?(还是说题主是不是对内存泄漏有什么误会?)

内存池的主要优点是在小块内存分配次数过多的时候避免频繁地向操作系统申请内存,大块内存就,小块内存就直接从内存池里取。前者是将物理内存转换成虚拟内存返回给用户需要陷入内核态,后者只是通过算法计算出一个指针并返回,在用户态做的。

杜绝内存泄漏(以及资源泄露),一方面是良好的编程习惯(比如C的goto清理分支,C++的RAII),另一方面是学会使用valgrind等内存泄漏检测工具。否则还是积极拥抱GC比较好,虽然对于某个资源类你调用了但是忘记了一样会内存泄露。

4. 怎么查看内存泄漏

鼠标双击下这里thrdcore.cpp(166),下同。如果是在虚函数里泄露就找不到,只能自己去找虚函数里是否有new

5. 如何检查内存泄露

内存泄露测视不属于静态测视,这个属于动态测试了。

6. 怎么检查内存泄漏了

内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。

这是C和C++程序员的噩梦之一。

1)实质: 内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,导致在释放该段内存之前就失去了对该段内存的控制,从而造成了内存的浪费;

2)原理: 内存泄露的关键就是记录分配的内存和释放内存的操作,看看能不能匹配。跟踪每一块内存的生命周期;

3)方法:不同开发环境有不同的检测方法,下面以VisualStudio为例介绍。在VS中使用时,需加上 #define _CRTDBG_MAP_ALLOC #include

7. 内存泄漏如何查看和解决

手机泄露个人信息,建议采取如下补救措施:

1、更改重要的密码

现在的人离不开网络,一旦个人信息泄露,涉及面非常广。尤其对于喜欢网购的人来说,个人信息往往和银行账号、密码等重要的信息联系在一起。因此一旦个人信息泄露,应该马上更改重要的密码,避免造成经济损失。

2、报案

个人信息一旦泄露,应该报警。报案的目的一来是保护自己的权益,二来也是可以备案。一旦有更多的人遇到和你类似的情况,就可以一起处理。这样不仅可以维护自己的隐私权,还可以避免更多的经济损失。

3、律师起诉

如果个人重要的信息丢失,而且知道怎么丢失的或者是有很多线索,那么就可以向专业的律师咨询相关的法律法规。如果律师给予肯定的答复,就可以利用法律的武器维护自己的权益。

4、收集证据

在信息泄露之后,很容易收到各种各种的邮件,接到天南海北的电话。这时候要留心,记下对方的电话或者是邮箱地址等有用的信息。可能这些信息很琐碎,但是一旦收集好这些信息不仅能帮助自己维权,而且还可能帮助更多的人。

5、提醒身边的亲朋好友防止被骗

个人信息泄漏后,不仅可以用这些信息盗用你的账号,甚至还可能骗你身边的亲朋好友。所以一旦你的信息泄露,或者联系工具账号丢失,一定要第一时间通知你的亲朋好友,要他们倍加防范,以免上当受骗。

二、如何防止手机泄露个人信息

信息安全无小事。个人、单位、国家的隐私和秘密一旦泄露,往往会对社会造成诸多不良影响。各种信息泄露事件反映出来的个人信息安全意识淡薄和行业不规范等问题,也让我们更加清醒地认识到手机信息安全对于国计民生的重要意义。

防止手机信息泄露,普通用户并非无能为力。只要增强信息安全保密意识,掌握手机安全防护常识和技能,学会科学使用手机,减少甚至杜绝个人信息泄露,是完全有可能的。

第一,要杜绝麻痹思想和侥幸心理

现在,有很多人只会使用手机,对手机存储卡信息数据的销毁、手机信息安全隐患和技术漏洞,缺乏了解或知之不多。因此,要杜绝麻痹思想和侥幸心理,加强学习,切实认清手机使用过程中的各种安全隐患,认知手机泄露个人信息的途径和方式,充分意识到手机泄露秘密的严重后果,做到手机防泄密“警钟长鸣”。

第二,要掌握安全防范常识

对特殊人群、特殊场所、特殊内容,要使用特殊的手机管理方法。对于涉及秘密的人员,如军人、机要人员等,需制定严格的手机管理使用制度,或配发保密性强的专用手机,做到专机专用。对于涉密场所,要按照保密规定,设置手机安检设备。做到不在涉密的场所携带和使用手机,不用手机记录、录音、照相和传输涉密内容。

同时,不要轻易接听、接收陌生人的电话、短信、彩信、邮件,必要时关闭手机,彻底切断手机电源,防止被植入病毒或木马。

不要把手机设置为自动登录,每次登录都应输入密码。要充分利用手机自带的图案和密码锁屏功能,防止别人解锁屏幕偷看个人隐私。智能手机用户使用网络服务后,应及时注销手机账号登录状态。还应经常及时清除可能的敏感信息。

第三,严格遵守各项保密规定

各项保密规定不仅对于保护企业数据、商业秘密乃至保障国家安全等,具有不可估量的重要作用,也有利于保护个人隐私。为此,要切实遵守各项保密规定,尤其是要做到不在手机中存储、处理涉密的重要信息,从源头上杜绝失泄密事件的发生。要避免在通信、微信、QQ、电子邮件中泄露相关重要信息。不在手机中存储核心人员的工作单位、职务等敏感信息。也可采取简写或使用代号避免重要敏感信息完全暴露。

第四,利用正规平台下载软件

智能手机用户下载软件时,应登录官方平台下载,避免到论坛下载。不要使用来路不明的软件,不要浏览不良网页。坚持在正规的手机运营商处维修维护手机,防止被植入病毒程序。安装软件时,一定要详细查看软件索取的权限列表,出现敏感权限时要特别警惕。如果软件要求提供与服务无关的通讯录、短信等,或者安装一个阅读器程序却要求摄像头的访问权限,就要警惕是否有陷阱。

第五,严控系统权限

手机用户应树立风险意识,尽量避免将访问个人隐私的权限和访问网络的权限同时授予可疑程序。对于平常不用或很少使用的功能,如蓝牙、红外、手机定位、高清摄像等,应予以关闭或停止使用,避免手机被远程攻击或被病毒搜索到,需要使用这些功能时再打开。当免费使用WIFI时,只使用自己了解和信任的网络,并且不轻易向外发送重要的个人信息。

第六,彻底删除不需要的信息

当用户删除或格式化手机存储介质中的信息时,这些信息并未真正被清除掉,只是删除了主引导区信息,修改了它的控制结构,并被标记为可覆盖。当有新的信息存入时,就可以覆盖原有信息,但未被覆盖时,只要不是物理原因被破坏,这些信息依然保留在存储介质中,能够被恢复。因此,在更换手机或需要删除相关信息时,可以选用具备数据粉碎功能的手机软件,或者对手机格式化后重复存储大量电影视频、垃圾文件、图片等无用数据到手机内存,再反复删除这些信息,使无效信息反复填满手机空间,彻底覆盖掉原来的信息,增加数据恢复难度。另外,对旧手机尽量不要随意转让或出售,应当进行物理销毁,以规避暴露隐私的风险。

此外,还可以利用多部手机,将工作和个人通信用途的手机与上网娱乐的手机从物理上分开,尽量将通讯录、短信等资料存在SIM卡中,把照片、图片等文件存到手机以外的外接存储器上,减少信息泄露的风险

8. 如何排查内存泄露问题

由于这个Handler作为内部类声明在Activity内部,普通的内部类对象隐式地保存了一个指向外部类对象的引用,所以这个Handler对象保存了一个指向Activity对象的引用。

而这个Handler对象的生命周期可能比Activity生命周期长,比如当有一个后台线程持有该Handler,别且该线程在执行一个长时间任务。

所以当该Handler没有被JVM垃圾回收器回收时,它就阻止了它引用的外部类Activity对象的回收,这里就导致了内存泄露

9. 怎么检查内存泄漏情况

别人我不知道,但我的做法如下:

1.尽量不去手动分配内存。比如,我一般不使用数组,而使用STL的vector.

2.如果需要手动分配数组,尽量使用STL中的分配方式,或者使用STL和BOOST中的智能指针。

3.某些应用,比如MSXML,尽量使用智能指针。

4.凡是使用new和delete的地方,首先注意指针的初始化,然后要注意new和delete的配对,再就是要注意错误的捕捉。很多时候,内存泄漏不是因为new和delete的配对造成的,而是在自己没有考虑到的可能结果中,程序中断而没有delete手动分配的内存.

5.貌似有专门的方法来检测内存泄漏。不过我只听说过,没用过。

10. 怎么看内存泄露

1.首先,如果我们是在虚拟机中的系统,面对内存溢出与储存不足,我们可以重新磁盘大小,通过数据重新划分来解决。

2.第二,内存之所以溢出,是由于系统盘运行的程序过大,且系统盘预留空间不足,面对这种情况,我们可对c盘进行碎片整理,并对磁盘的无用程序进行清理,最后能留下1gb以上的储存空间。

3.第三,打开程序过多,如果在使用电脑过程中打开太多程序,也会导致内存溢出,从而出现卡机情况,面对这一情况,我们适当关闭一些程序即可。

4.第四,删除“启动”文件夹中的所有快捷方式,通过这一方式,可以让cpu预处理变得更快捷,从而不已产生出错的情况。

5.第五,增加系统可用磁盘,这一点可以通过庚等