内存泄漏检查

内存泄漏检查

ID:33034358

大小:325.93 KB

页数:21页

时间:2019-02-19

内存泄漏检查_第1页
内存泄漏检查_第2页
内存泄漏检查_第3页
内存泄漏检查_第4页
内存泄漏检查_第5页
资源描述:

《内存泄漏检查》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、内存泄漏检测方法•对于不同的程序可以使用不同的方法来进行内存泄漏的检查,还可以使用一些专门的工具来进行内存问题的检查,例女口MemProof、AQTime、Purify>BundsChecker等。•也可以使用简单的办法:利用Windows自带的Perfmon來监控程序进程的handlecount、VirtualBytes和WorkingSet3个计数器。HandleCount记录了进程当前打开的句柄个数,监视这个计•数器有助于发现程序是否存在句柄类型的内存泄漏;VirtualBytes记录了程

2、序进程在虚拟地址空间上使用的虚拟内存的大小,VirtualBytes—*般总大于程序的WorkingSet,监视VirtualBytes可以帮助发现一些系统底层的问题;WorkingSet记录了操作系统为程序进程分配的内存总量,如果这个值不断地持续增加,而VirtualBytes却跳跃式地增加,则很可能存在内存泄漏问题。堆栈内存泄漏•堆栈空间不足会导致在受托管的情况下引发StackOverflowException类型的异常,线程泄漏是堆栈内存泄漏的其中一种。线程发生泄漏,从而使线程的整个堆栈发

3、生泄漏。•如果应用程序为了执行后台工作而创建了大量的工作线程,但却没有正常终止这些线程,则可能会引起线程泄漏。一个堆栈内存泄漏的例子:privatevoidbuttonl_Click(objectsender,EventArgse){//循环启动多个线程for(inti=0;i<1500;i++){Threadt=newThread(newThreadStart(ThreadProc));t.Start();})staticvoidThreadProc()Console.WriteLine("T

4、hread#{0}n,Thread.CurrentThread.ManagedThreadId);//阻塞直到当前线程结束Thread.CurrentThread.Join();Foral应用程序中发生了无法处理的异常0如果单击杠继续”>应用程序将忽略此错误并尝试继续。如果单击杠退出汀,应用程序将立即关闭。线程未能启动■°继续C)I退出©I糜勰寵瞬试而不是此对话框的详细信息'•1•.人••4••4•••人•・人・・丄・•••人•・人・IIm1•A*••A••1••1・人・••A••4••1te一

5、在在在在在SSym.Threading.ThreadstartExcgption:线程未能启动。>System.ISystem.Threading.Thread.StartinternalCEPrincipalprincipal丿:System.Threading.Thread.Start()MemoryLeakTes11・Form1・bu11onl_C1ick(Objectsender.EventArgs-内部异常罐栈跟踪的结尾―System.Windows・Forms・Control.OnC

6、lickCEventArgse)System.Windows・Forms・Button.OnClick(Eventkrg;£e)利用Perfmon检测线程堆栈泄漏•默认堆栈大小为1MB,因此如果应用程序的PrivateBytes不断增大,同时.NETCLRLocksAndThreads屮的#ofcurrentlogicalThreads也相应地增大,那么就很可能是发生了线程堆栈泄漏。•可以利用Perfmon來判断是否存在内存泄漏现象。添加计数器r便用本地计算机计数量◎a从计smwitiRBw

7、

8、8F38CSD4F0BE480曹能对象(Q):

9、Proc«siC所育计数器Q)a从列衰啊计Ma)Pt(«FileBytesPeekPoolNonpydBytesPoolPt<・dBytesThr««dCountVt»•IttolRt/*otr所誉范例Q)G从列衰皈范例(X)关闭I执行被测试程序的相关操作,并在性能监视器中密切注意"PrivateBytes"和“#ofcurrentlogicalThreads”两个计数器的变化曲线,如果PrivateBytes不断增大,同时#ofcunentlo

10、gicalThreads也相应地增大,则可判断程序发生了线程堆栈泄漏。用CLRProfiler定位线程泄漏代码(MtnAMt%.woavxj)―(imvw>

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。