轉自: http://blog.csdn.net/hualusiyu/article/details/8166450
大家都知道.net有一套自己的內存(垃圾)回收機制,除非有一些數據(方法)長(cháng)期占有內存不隨著(zhù)垃圾回收功能而釋放內存,這樣就造成了我們經(jīng)常說(shuō)的內存泄露、內存持續增長(cháng)得不到釋放等問(wèn)題導致APS.net網(wǎng)站或者C/S應用程序的用戶(hù)無(wú)法正常使用。最終會(huì )導致用戶(hù)通過(guò)客服人員或者技術(shù)支持人員投訴公司的技術(shù)部門(mén),形成一連串的未知的不良反映。
不管哪位性能測試人員,遇到這樣的問(wèn)題都是摸不著(zhù)頭腦,不知從何處下手。.net環(huán)境中不像JAVA有那么多的工具可以支撐,比如性能測試經(jīng)常用到的Jconsole、Jprofiler等工具,并且基于JAVA運行環(huán)境的在打印GC日志方面也很強大。對于.net平臺,微軟也提供的.net輔助工具CLR Profiler可以很好的幫助我們的性能測試人員以及研發(fā)人員,找到內存沒(méi)有及時(shí)回收,占著(zhù)內存不釋放的方法(詳細到這個(gè)方法下面定義的數組或者其他變量)。
下載地址:http://search.microsoft.com/en-us/DownloadResults.aspx?q=clr%20profiler
可根據自己電腦.NET的版本下載相應的CLRProfiler,我下載的是CLR Profiler for .NET Framework 4版本的。
下載后提示解壓縮,選擇要加壓到的目錄;然后進(jìn)入D:\SoftWare\CLRProfiler4\CLRProfiler\Binaries目錄下選擇對應操作系統64位或者32位的CLRProfiler.exe。
在說(shuō)一下,CLRProfiler可以分析.net平臺開(kāi)發(fā)的幾乎所有的產(chǎn)品,包括C/S應用程序、服務(wù)和asp.net編寫(xiě)的網(wǎng)站等。
說(shuō)明:該工具適用于性能測試瓶頸定位,做性能測試時(shí)不建議開(kāi)啟,需要安裝在應用服務(wù)器所在服務(wù)器(iis和.netframework已經(jīng)安裝好)
我的測試環(huán)境是:IIS服務(wù)器(asp.net開(kāi)發(fā)的站點(diǎn))+MS sqlserver
打開(kāi)CLRProfiler界面,選中Profiling active、Allocation和Calls,【Start Application】是加載.net開(kāi)發(fā)的exe程序的;【Start URL】是輸入被測頁(yè)面URL的;

在IE中測試asp.net開(kāi)發(fā)的頁(yè)面,CLRProfiler首先要加載IIS所需要的環(huán)境變量,CLR Profiler然后提示你加載ASP.NET應用程序和等待ASP.NET工作進(jìn)程啟動(dòng)。
在File菜單中點(diǎn)擊Profile ASP.NET


停止IIS服務(wù)可能要很長(cháng)時(shí)間,需要耐心等待。最后提示可以測試頁(yè)面啦
“Waiting for ASP.NET to start common language runtime - this is the time to load your test page”

點(diǎn)擊【Start URL】按鈕,輸入我們要測試的頁(yè)面URL,點(diǎn)擊OK,就會(huì )自動(dòng)打開(kāi)我們要檢查內存有不釋放內存的頁(yè)面,多在頁(yè)面中使用一會(huì ),以便CLR Profiler收集更多的數據。

當已完成頁(yè)面的運行,請點(diǎn)擊CLR Profiler窗口中的 【Kill ASP.NET】。然后CLR Profiler自動(dòng)關(guān)閉IIS,移除環(huán)境變量,重啟IIS。



點(diǎn)擊【Allocation Graph】打開(kāi)內存分配視圖,在這個(gè)視圖當中我們可以看出堆棧是如何分別對象的

點(diǎn)擊【Objects by Address】按鈕將會(huì )顯示各種方法在內存中占用的直方圖界面

可以通過(guò)選中那個(gè)視圖中的某一個(gè)柱形條,右擊show who allocated。點(diǎn)擊這個(gè)菜單項顯示關(guān)于所選分配的特定詳細內容,而不是所有分配的

點(diǎn)擊[TimeLine]按鈕,在打開(kāi)的圖片中可以清晰的看出各次回收時(shí)間和前后內存占用量情況

在view菜單中,有很多沒(méi)有顯示的菜單。

點(diǎn)擊call tree 菜單,可以看到在不同線(xiàn)程下,所有方法占用內存大小,被調用次數等信息

聯(lián)系客服