【转】.NET程序内存分析工具CLRProfiler的使用
大家都知道.net有一套自己的內(nèi)存(垃圾)回收機(jī)制,除非有一些數(shù)據(jù)(方法)長(zhǎng)期占有內(nèi)存不隨著垃圾回收功能而釋放內(nèi)存,這樣就造成了我們經(jīng)常說的內(nèi)存泄露、內(nèi)存持續(xù)增長(zhǎng)得不到釋放等問題導(dǎo)致APS.net網(wǎng)站或者C/S應(yīng)用程序的用戶無法正常使用。最終會(huì)導(dǎo)致用戶通過客服人員或者技術(shù)支持人員投訴公司的技術(shù)部門,形成一連串的未知的不良反映。
不管哪位性能測(cè)試人員,遇到這樣的問題都是摸不著頭腦,不知從何處下手。.net環(huán)境中不像JAVA有那么多的工具可以支撐,比如性能測(cè)試經(jīng)常用到的Jconsole、Jprofiler等工具,并且基于JAVA運(yùn)行環(huán)境的在打印GC日志方面也很強(qiáng)大。對(duì)于.net平臺(tái),微軟也提供的.net輔助工具CLR Profiler可以很好的幫助我們的性能測(cè)試人員以及研發(fā)人員,找到內(nèi)存沒有及時(shí)回收,占著內(nèi)存不釋放的方法(詳細(xì)到這個(gè)方法下面定義的數(shù)組或者其他變量)。
下載地址:http://search.microsoft.com/en-us/DownloadResults.aspx?q=clr%20profiler
可根據(jù)自己電腦.NET的版本下載相應(yīng)的CLR Profiler,我下載的是CLR Profiler for .NET Framework 4版本的。
下載后提示解壓縮,選擇要加壓到的目錄;然后進(jìn)入D:\SoftWare\CLRProfiler4\CLRProfiler\Binaries目錄下選擇對(duì)應(yīng)操作系統(tǒng)64位或者32位的CLRProfiler.exe。
在說一下,CLRProfiler可以分析.net平臺(tái)開發(fā)的幾乎所有的產(chǎn)品,包括C/S應(yīng)用程序、服務(wù)和asp.net編寫的網(wǎng)站等。
我的環(huán)境是:IIS服務(wù)器(asp.net開發(fā)的站點(diǎn))+MS sql
打開CLRProfiler界面,選中Profiling active、Allocation和Calls,【Start Application】是加載.net開發(fā)的exe程序的;【Start URL】是輸入被測(cè)頁(yè)面URL的;
我要在IE中測(cè)試asp.net開發(fā)的頁(yè)面,CLR Profiler首先要加載IIS所需要的環(huán)境變量,CLR Profiler然后提示你加載ASP.NET應(yīng)用程序和等待ASP.NET工作進(jìn)程啟動(dòng)。
在File菜單中點(diǎn)擊Profile ASP.NET
停止IIS服務(wù)可能要很長(zhǎng)時(shí)間,需要耐心等待。最后提示可以測(cè)試頁(yè)面啦
“Waiting for ASP.NET to start common language runtime - this is thetime to load your test page”
點(diǎn)擊【Start URL】按鈕,輸入我們要測(cè)試的頁(yè)面URL,點(diǎn)擊OK,就會(huì)自動(dòng)打開我們要檢查內(nèi)存有不釋放內(nèi)存的頁(yè)面,多在頁(yè)面中使用一會(huì),以便CLR Profiler收集更多的數(shù)據(jù)。
當(dāng)已完成頁(yè)面的運(yùn)行,請(qǐng)點(diǎn)擊CLR Profiler窗口中的 【Kill ASP.NET】。然后CLR Profiler自動(dòng)關(guān)閉IIS,移除環(huán)境變量,重啟IIS。
點(diǎn)擊【Allocation Graph】打開內(nèi)存分配視圖,在這個(gè)視圖當(dāng)中我們可以看出堆棧是如何分別對(duì)象的
點(diǎn)擊【Objects by Address】按鈕將會(huì)顯示各種方法在內(nèi)存中占用的直方圖界面
可以通過選中那個(gè)視圖中的某一個(gè)柱形條,右擊show who allocated。點(diǎn)擊這個(gè)菜單項(xiàng)顯示關(guān)于所選分配的特定詳細(xì)內(nèi)容,而不是所有分配的
點(diǎn)擊[TimeLine]按鈕,在打開的圖片中可以清晰的看出各次回收時(shí)間和前后內(nèi)存占用量情況
在view菜單中,有很多沒有顯示的菜單。
點(diǎn)擊call tree 菜單,可以看到在不同線程下,所有方法占用內(nèi)存大小,被調(diào)用次數(shù)等信息
如果看不到圖片請(qǐng)查看我的另一篇文章:http://blog.csdn.net/wy3552128/article/details/8158938
- ?
總結(jié)
以上是生活随笔為你收集整理的【转】.NET程序内存分析工具CLRProfiler的使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2022上半年Wi-Fi 6路由推荐:2
- 下一篇: 【转】.NET框架简介