首页 > 其他 > 详细

用Performance Monitor检测程序是否存在memory leak

时间:2014-03-23 10:38:32      阅读:524      评论:0      收藏:0      [点我收藏+]

关于内存泄露,一般用Performance Monitor监测以下几个指标.

#1 Process/Private Bytes,

#2 .NET CLR Memory/# Bytes in All Heaps,

#3 .NET CLR LocksAndThreads/# of current logical Threads.

如果#1持续增长, 但是 #2保持平稳, 那么很可能有unmanged泄露. 如果 1和 2都持续增长,那么很可能有managed泄露. 如果#3有异常的增长, 那么泄露可能发生在线程的栈上. 在任务管理器里Process页看到的Memory一般是指working set,这个一般不用来作为内存泄露的依据。简单来说它只是表示当前程序在物理内存里面占了多少空间,和当前程序要用多少内存是两码事。

 

下面详细介绍使用Performance Monitor收集相关的测试数据

1. 打开Start -> Control Panel->Administrative Tools->Performance Monitor (或者直接在命令行上输perfmon, 回车)

2. 在左边找到Data Collector Sets -> User Defined,右键选择New -> Data Collect Set

3. 在弹出的对话框中填入名字,比如MySampleMemoryLeak, 下面的Radio Box 选Create Manually(advanced), 点Next

4. 选择Create data logs, 勾上Performance Counter, 点Next.

5. 点Add, 然后依次添加我们我们前面提到的三个指标。选择相关的Performance Counter,以及我们要监测的程序,点”Add>>”。三个都添加完成后点击OK。

bubuko.com,布布扣

6. 有需要的话可以调整一下抓数据的间隔时间,点Next.

7. 选择你想存放数据的路径,点Next, 点Finish.

8. 在右边的DataCollector01上面右键,选属性. 在Performance Counters页面的Log format选项下面选择”Comma Separated”(这样你就可以产生.csv文件,然后可以利用word生成直观的图表),点OK.

至此,我们所需的Performance Counter已经创建完毕。

 

接下来,我们可以启动要测试的程序,warm up之后就可以开始监测。在Performance Monitor里面选择刚才建的MySampleMemoryLeak,然后在工具栏上选开始(或者脚本运行命令"logman start MySampleMemoryLeak”),然后在我们的程序里面跑需要检测是否有内存泄露的scenario,跑完以后在Performance Monitor里面停止MySampleMemoryLeak的监视(或者脚本运行命令"logman stop MySampleMemoryLeak”)

 

最后,我们可以打开csv文件,根据里面的数据生成图表,根据其增长趋势,判断有没有内存泄露以及是哪一类型的泄露。

用Performance Monitor检测程序是否存在memory leak,布布扣,bubuko.com

用Performance Monitor检测程序是否存在memory leak

原文:http://www.cnblogs.com/fbird/p/3615306.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!