不卡AV在线|网页在线观看无码高清|亚洲国产亚洲国产|国产伦精品一区二区三区免费视频

學(xué)習(xí)啦 > 學(xué)習(xí)電腦 > 電腦硬件知識 > 內(nèi)存知識 > vs2010內(nèi)存分析的方法

vs2010內(nèi)存分析的方法

時間: 樂恒1051 分享

vs2010內(nèi)存分析的方法

  想要弄清vs2010內(nèi)存分析的結(jié)果,可以通過基于軟件的工具檢測,和使用程序的檢測方式。為此學(xué)習(xí)啦小編為大家整理推薦了,希望大家喜歡。

  vs2010 內(nèi)存分析

  其實VS已經(jīng)提供基于CPU占用情況的性能分析功能,但它并不能什么情況都能分析出來。當(dāng)你發(fā)現(xiàn)mscorwks.dll這玩意占用著大量的資源,確無法點擊進(jìn)去的看具體情況的時候有可能會感到無能為力,也許已經(jīng)盡力了那些.net framework的事情管不了。其實mscorwks.dll的損耗和我們編寫的代碼有著緊密的聯(lián)系,我們可以通過VS的內(nèi)在分析工作看下代碼的內(nèi)存分配狀況然后再查找問題。

  打開性能分析向?qū)?/p>

  選擇內(nèi)存分配采樣即可。

  運行后會產(chǎn)以下的結(jié)果圖:

  圖中可以看到占用字節(jié)最多的方法和分配最多字節(jié)的類型,我們可以點擊內(nèi)存分配最多的類型看下詳細(xì)列表

  在這里我們可以看到byte[]和char[]分配了大量的內(nèi)存,而這些通過cpu性能分析是看不到的,而這些對像的創(chuàng)建和銷毀都會使用的資源的。我們可以點擊一下看這些內(nèi)存分配是那里產(chǎn)生的。

  從上面的圖可以看到byte[]的分配主要是來源于池的初始化,既然是必須的就不用考慮那是必須做的。再來看下char[]來源于每次寫入的Encoding.Getbytes里的string.ToCharArray();反編譯看下代碼情況:

  從代碼可以看到原因所在,因為GetBytes需要一個char[],而string每次獲取char[]都是返回一個新提char[]對象。其實這兩個對象都提供基于char[]操作和copy的到char[]的方法。仔細(xì)看下MSDN你就能找到你想要的:)這里我就不多說了。

  調(diào)整一下代碼后的分析結(jié)果又怎樣呢?

  調(diào)整一下char[]的分配一下子就少了:)創(chuàng)建的對象少了,分配的內(nèi)存少了,那內(nèi)存回收就不用說了。

2941350