【转】.NET程序内存分析工具CLRProfiler的使用
大家都知道.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的版本下載相應的CLR Profiler,我下載的是CLR Profiler for .NET Framework 4版本的。
下載后提示解壓縮,選擇要加壓到的目錄;然后進入D:\SoftWare\CLRProfiler4\CLRProfiler\Binaries目錄下選擇對應操作系統64位或者32位的CLRProfiler.exe。
 在說一下,CLRProfiler可以分析.net平臺開發的幾乎所有的產品,包括C/S應用程序、服務和asp.net編寫的網站等。
我的環境是:IIS服務器(asp.net開發的站點)+MS sql
打開CLRProfiler界面,選中Profiling active、Allocation和Calls,【Start Application】是加載.net開發的exe程序的;【Start URL】是輸入被測頁面URL的;
我要在IE中測試asp.net開發的頁面,CLR Profiler首先要加載IIS所需要的環境變量,CLR Profiler然后提示你加載ASP.NET應用程序和等待ASP.NET工作進程啟動。
在File菜單中點擊Profile ASP.NET
停止IIS服務可能要很長時間,需要耐心等待。最后提示可以測試頁面啦
“Waiting for ASP.NET to start common language runtime - this is thetime 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 菜單,可以看到在不同線程下,所有方法占用內存大小,被調用次數等信息
如果看不到圖片請查看我的另一篇文章:http://blog.csdn.net/wy3552128/article/details/8158938
- ?
總結
以上是生活随笔為你收集整理的【转】.NET程序内存分析工具CLRProfiler的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 2022上半年Wi-Fi 6路由推荐:2
- 下一篇: 千元级亮机卡大战开始 Intel显卡驱动
