<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    .NET性能分析最佳實踐之:如何找出使用過多內(nèi)存的.NET代碼(基礎(chǔ)篇)

    在.NET應用中一個常常影響性能的因素就是代碼消耗了過多的內(nèi)存。很多的開發(fā)人員在編寫代碼的過程中常常不會關(guān)注性能,從而使得應用程序中到處存在性能瓶頸。很多的時候,開發(fā)人員關(guān)注的總是代碼的執(zhí)行時間的長短,而把真正的性能問題丟掉了一邊。在本篇文章中,我們將會找出代碼中的哪些功能消耗了多少內(nèi)存。

                  

    本篇文章比較簡單,我們會主要詳細的介紹CLR Profiler這個工具。

     

    基礎(chǔ)篇:詳解介紹Profiler的使用

           大家可以從這里從微軟的站點下載CLR Profiler。一旦下載CLR Profiler之后,我們就可以解壓,然后運行Bin文件夾中的“CLRProfiler.exe”。

    首先我們來介紹一下CLR Profiler的功能。

     

           CLR Profiler確實是一個不錯的工具,通過使用它,我們可以了解一個.NET應用程序到底是如何使用內(nèi)存的,基本上面它的功能可以分為兩類,如圖所示:

     

    20120409210650.png

     

    1. 對一個.NET應用中的內(nèi)存是如何分配的給出一個完整的描述。所以,我們可以看到每一種類型,方法所占用的內(nèi)存情況。

    2. 它告訴我們一個方法被調(diào)用了多少次。

     

           這里需要注意的就是:不要再生產(chǎn)環(huán)境或上面的服務器站點中運行CLR Profiler,因為它會嚴重的影響程序的影響。例如,如果我們的應用程序中包含兩個方法,fun1和fun2,此時當我們運行CLR Profiler的時候,它會將一些邏輯注入到應用程序中,通過下面的一個圖就可以很清楚的看出這個問題:

     

    20120409210755.png

     

     

    說了這么多,我們還是來看看,如何使用CLR Profiler。

     

           首先,在使用CLR Profiler之前,我們要清楚:要使用這個工具來干嘛?基本上,有兩點理由:查看內(nèi)存的分配與使用的情況;查看方法被調(diào)用次數(shù)。

    啟動了CRLProfiler.exe之后,選擇要檢查的程序,如下圖:

     

    20120409210842.png

     

     

    此時,應用程序就開始運行,我們就可以在Profiler中看到一些信息,例如應用程序占用的內(nèi)容,每一代對象占用的大小等,如下:

     20120409210929.png

     

     

           其實上面的那個應用程序非常的簡單,只是作為一個demo演示而言。上面的程序的功能就是在一個按鈕的事件中調(diào)用了兩個方法:UseSimpleStringsUseStringBuilders。這個兩個方法都是在拼接字符串(這也是常常被用來做例子的一個場景),我們分別讓它們拼接1000個字符串,如下:

     

    20120409211022.png

     

     

    其中UseSimpleStrings如下:

     

    20120409211053.png

     

    UseStringBuilders如下:

     

    20120409211127.png

           現(xiàn)在,我們可以嘗試著使用Profiler去看看每個方法使用多少的內(nèi)存。我們在程序中點擊按鈕,好讓Profiler去收集信息。然后,我們在點擊Profiler的“histogram”按鈕,此時我們就可以看到程序中的每一種類型的內(nèi)存占用情況,如下:

     

    20120409211321.png

     

    如果我們想看每一個方法在運行過程中占用的內(nèi)容,可以點擊“Allocation Graph”,如下:

     

    20120409211413.png

     

    通過這個操作,我們可以看到下面的圖:

     

    20120409211458.png

     

           乍一看,可能感覺界面非常的混亂,特別是在應用程序很大的時候。為了更加看到我們想看的方法,我們可以通過在界面的中點擊右鍵,點擊“Find Routine”,然后選擇輸入過濾的條件,如下:

     

    20120409211523.png

     

    這樣就可以快速的定位,如下:

     

    20120409211559.png

     

    然后在方法上面雙擊,就進一步的展開,查看細節(jié),如下:

     

    20120409211642.png

     

           在上圖中,我們只是看到了“UseSimpleStrings”方法的使用內(nèi)存的情況,因為這個界面顯示的信息比較的粗糙,只是把一些內(nèi)存使用比較多的方法列出來了,我們可以通過點擊“0(everything)”查看所以的方法,此時看到如下:

     

    20120409211717.png

     

    通過上面的圖,我們一目了然的直到內(nèi)存的使用情況

    posted on 2012-04-18 17:27 SkyDream 閱讀(578) 評論(0)  編輯  收藏 所屬分類: CLR Profiler

    <2012年4月>
    25262728293031
    1234567
    891011121314
    15161718192021
    22232425262728
    293012345

    導航

    統(tǒng)計

    常用鏈接

    留言簿(3)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 久久久久亚洲AV成人无码| 久久精品国产亚洲av品善| 四虎国产精品免费久久| 黄色免费网址在线观看| 亚洲精品福利视频| 暖暖免费高清日本一区二区三区| 香蕉国产在线观看免费| 日产亚洲一区二区三区| 国产免费131美女视频| 久草免费福利资源站| 亚洲精品乱码久久久久久V| 亚洲人成在线播放网站| 野花高清在线电影观看免费视频| 免费一级做a爰片久久毛片潮| 91精品国产亚洲爽啪在线影院| 国产美女精品视频免费观看 | 久久综合给合久久国产免费| 亚洲最大天堂无码精品区| 亚洲区小说区激情区图片区| 四虎成人免费网址在线| 国产成人免费ā片在线观看老同学 | 久久精品熟女亚洲av麻豆| 亚洲AV无码乱码国产麻豆| 国产乱子伦精品免费无码专区| 69xx免费观看视频| 免费毛片在线看不用播放器| 亚洲国产美女精品久久久| 久久精品国产亚洲av影院| 久久乐国产精品亚洲综合| 毛片视频免费观看| 真实国产乱子伦精品免费| 国产精品免费久久久久久久久| 亚洲av无码一区二区三区在线播放| 久久精品国产亚洲av水果派| 国产成人精品久久亚洲| 国产成人高清精品免费软件| 曰批全过程免费视频在线观看 | 野花香在线视频免费观看大全 | av片在线观看永久免费| 国产亚洲视频在线播放大全| 国产亚洲福利在线视频|