检查c#代码内存泄露工具-CLR Profiler

大家都知道.net有一套自己的内存(垃圾)回收机制,除非有一些数据(方法)长期占有内存不随着垃圾回收功能而释放内存,这样就造成了我们经常说的内存泄露、内存持续增长得不到释放等问题导致APS.net网站或者C/S应用程序的用户无法正常使用。最终会导致用户通过客服人员或者技术支持人员投诉公司的技术部门,形成一连串的未知的不良反映。

不管哪位性能测试人员,遇到这样的问题都是摸不着头脑,不知从何处下手。.net环境中不像Java有那么多的工具可以支撑,比如性能测试经常用到的Jconsole、Jprofiler等工具,并且基于JAVA运行环境的在打印GC日志方面也很强大。对于.net平台,微软也提供的.net辅助工具CLR Profiler可以很好的帮助我们的性能测试人员以及研发人员,找到内存没有及时回收,占着内存不释放的方法(详细到这个方法下面定义的数组或者其他变量)。

下载地址:http://search.microsoft.com/en-us/DownloadResults.aspx?q=clr%20profiler

可根据自己电脑.NET的版本下载相应的CLRProfiler,我下载的是CLR Profiler for .NET Framework 4版本的。

下载后提示解压缩,选择要加压到的目录;然后进入D:\SoftWare\CLRProfiler4\CLRProfiler\Binaries目录下选择对应操作系统64位或者32位的CLRProfiler.exe。
在说一下,CLRProfiler可以分析.net平台开发的几乎所有的产品,包括C/S应用程序、服务和asp.net编写的网站等。

说明:该工具适用于性能测试瓶颈定位,做性能测试时不建议开启,需要安装在应用服务器所在服务器(iis和.netframework已经安装好)

我的测试环境是:IIS服务器(asp.net开发的站点)+MS sqlserver

打开CLRProfiler界面,选中Profiling active、Allocation和Calls,【Start Application】是加载.net开发的exe程序的;【Start URL】是输入被测页面URL的;

在IE中测试asp.net开发的页面,CLRProfiler首先要加载IIS所需要的环境变量,CLR Profiler然后提示你加载ASP.NET应用程序和等待ASP.NET工作进程启动。

在File菜单中点击Profile ASP.NET

停止IIS服务可能要很长时间,需要耐心等待。最后提示可以测试页面啦

“Waiting for ASP.NET to start common language runtime - this is the time to load your test page”

点击【Start URL】按钮,输入我们要测试的页面URL,点击OK,就会自动打开我们要检查内存有不释放内存的页面,多在页面中使用一会,以便CLR Profiler收集更多的数据。

当已完成页面的运行,请点击CLR Profiler窗口中的 【Kill ASP.NET】。然后CLR Profiler自动关闭IIS,移除环境变量,重启IIS。

点击【Allocation Graph】打开内存分配视图,在这个视图当中我们可以看出堆栈是如何分别对象的

点击【Objects by Address】按钮将会显示各种方法在内存中占用的直方图界面

可以通过选中那个视图中的某一个柱形条,右击show who allocated。点击这个菜单项显示关于所选分配的特定详细内容,而不是所有分配的

点击[TimeLine]按钮,在打开的图片中可以清晰的看出各次回收时间和前后内存占用量情况

在view菜单中,有很多没有显示的菜单。

点击call tree 菜单,可以看到在不同线程下,所有方法占用内存大小,被调用次数等信息

CLR Profiler的更多相关文章

  1. Use CLR Profiler

    Use CLR Profiler 第一次翻译对我而言比较长的E文,有很多不足之处,请见谅.(个人的习惯GC又做了名词又做了名词) 原文:http://msdn.microsoft.com/en-us/ ...

  2. CLR Profiler 性能分析工具 (转)

    原文地址:http://www.cnblogs.com/kevinlzf/archive/2010/11/12/1876066.html 下载地址:http://www.microsoft.com/e ...

  3. CLR Profiler 性能分析工具

    CLR Profiler 性能分析工具 CLR Profiler 性能分析工具 CLR Profiler 有两个版本,分别用于CLR1.1 和 CLR2.0,至于CLR4试了一些也可以,但不知道是否完 ...

  4. How To: Use CLR Profiler

    (翻译)How To: Use CLR Profiler   第一次翻译对我而言比较长的E文,有很多不足之处,请见谅.(个人的习惯GC又做了名词又做了名词) 原文:http://msdn.micros ...

  5. 使用CLR Profiler分析.NET程序

    使用CLR Profiler分析.NET程序 就像剥去.NET语法糖衣的工具(Reflector等)很多一样,我们可以用来分析.NET程序性能的工具有很多,如前面一片博文DebugLZQ给大家介绍的v ...

  6. 转:检查c#代码内存泄露工具-CLR Profiler工具使用

    大家都知道.net有一套自己的内存(垃圾)回收机制,除非有一些数据(方法)长期占有内存不随着垃圾回收功能而释放内存,这样就造成了我们经常说的内存泄露.内存持续增长得不到释放等问题导致APS.NET网站 ...

  7. 使用CLR Profiler查看C#运行程序的内存占用情况

    http://blog.csdn.net/wy3552128/article/details/8158938 https://msdn.microsoft.com/en-us/library/ff65 ...

  8. Visual Studio CLR Profiler

    http://blogs.msdn.com/b/dotnet/archive/2013/04/04/net-memory-allocation-profiling-with-visual-studio ...

  9. CLR via C#学习笔记----知识总概括

    第1章 CLR的执行模型 托管模块的各个组成部分:PE32或PE32+头,CLR头,元数据,IL(中间语言)代码. 高级语言通常只公开了CLR的所有功能的一个子集.然而,IL汇编语言允许开发人员访问C ...

随机推荐

  1. 【读书笔记】iOS-Tagged Pointer对象-注意事项

    一,2013年9月,苹果推出了iPhone5s,与此同时,iPhone5s配备了首个采用64位架构的A7双核处理器,为了节省内存和提高执行效率,苹果提出了Tagged Pointer的概念. 对于64 ...

  2. iOS扫一扫功能开发

    之前很多二维码扫描都是基于zxing做的,但是zxing用起来真的很麻烦,又一直不更新.随着iOS6退出历史舞台,终于可以使用iOS7以后,用系统的AVFoundation做的二维码扫描器了. 初始化 ...

  3. 数据库性能优化之SQL语句优化

    一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的编写等是体会不出SQL语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着数据库中数据的增加,系统 ...

  4. Tomcat6环境JBPM4.4报错:java.lang.ClassNotFoundException: de.odysseus.el.util.SimpleResolver

    Tomcat6环境JBPM4.4报错:java.lang.ClassNotFoundException: de.odysseus.el.util.SimpleResolver 报错信息:

  5. 论近年来IT媒体的怪现象

    之前在Svbtle上看过一篇文章干掉这帮搞IT新闻的!,作者因为CNET曲解原意,称Instagram要单方面售卖用户自己照片的乌龙事件,致使内心遭受严重刺激,怒吼出「科技媒体记者都应该被枪毙」的言论 ...

  6. 使用MiniProfiler调试ASP.NET MVC网站性能

    MiniProfiler 以前开发Webform的时候可以开启trace来跟踪页面事件,这对于诊断程序的性能是有很大的帮助的,起到事半功倍的作用,今天我就来谈用mvc开 发项目的调试和性能监控.EF框 ...

  7. Sublime Text3 C++及Java开发环境配置

    一.C++开发环境配置 1. 下载MingW 2. 环境变量配置,系统属性->高级设置->环境变量,如果Mingw装在c盘更目录,其它自己思考 (1)PATH  变量值中加入 C:\Min ...

  8. 常用HTML正则

    <?php //HTML a连接正则 $str = ''; $isMatched = preg_match('/<a.*?[^<]>.*?<\/a>/', $str ...

  9. CSS盒模型重新理解篇

    最近比较闲,思索着怎么提高下JS技术,于是找到了昵称为豪情的这哥们的一篇文章,应该是哥们吧,详细了解了下,发现其中的试题CSS部分有些做起来很吃力,于是乎各种google恶补盒模型,找到了这哥们的一文 ...

  10. nginx 做负载均衡

    最近正在研究Nginx,Nginx作为反向代理服务器,可以对Web服务器提供加速,并且具有负载均衡的功能. 首先我要在官网下载Nginx(http://nginx.org/en/download.ht ...