国产99福利精品视频|杨幂精品国产福利在线|国精品午夜福利视频不卡|欧美精品黄网站在线播放|精品国产乱码久久久久久久|国产大片中文字幕在线观看|国产肥熟女视频一区二区三区|国产乱码无码视频一区二区三区

深入理解.Net平臺機(jī)制與性能影響

來源:北大青鳥飛迅校區(qū)|發(fā)布時間:2013-04-30 11:43:46

        轉(zhuǎn)眼間《.Net Discovery》系列文章已經(jīng)推出1年了,本文為該系列的第10-13篇文章,在本文中將對以前所講的.Net平臺知識做一個小小的總結(jié)與機(jī)制分析,引出并重點(diǎn)介紹這些機(jī)制對程序性能的影響與改進(jìn)建議。

  本文將分為四部分,分別講述了:垃圾回收機(jī)制、即時編譯機(jī)制、異常處理機(jī)制、字符串駐駐留機(jī)制的原理與性能改進(jìn)建議!.Net Discovery》系列的每篇文章撰寫耗時都在2天以上,轉(zhuǎn)載時麻煩著名作者Aicken(李鳴),并且未經(jīng)作者同意,禁止一切商業(yè)用途!

  一.關(guān)于垃圾回收機(jī)制

  ● 機(jī)制分析

  垃圾收集器是.Net平臺的一個特性,它自動回收托管堆上不再使用的對象,及時清理內(nèi)存,這一切都是對開發(fā)人員透明的,當(dāng)然你也可以手動把它召喚出來,它的本質(zhì)就是跟蹤所有被引用到的對象,整理對象不再被引用的對象,回收相應(yīng)的內(nèi)存。垃圾收集機(jī)制采用“標(biāo)記與清除(Mark Sweep)”算法來完成上述任務(wù),整個過程分為兩步:

  Step 1.Mark-Sweep :從應(yīng)用程序的root出發(fā),利用相互引用關(guān)系,遍歷其在Heap上動態(tài)分配的所有對象,指明需要回收的對象,標(biāo)記出那些存活的對象,予以標(biāo)記。

  Step 2.Compact: 對內(nèi)存中存活的對象進(jìn)行移動,修改它們的指針,使之在內(nèi)存中連續(xù),這樣空閑的內(nèi)存也就連續(xù)了,即完成了內(nèi)存釋放工作,也解決了內(nèi)存碎片問題,這個過程也可以成為指針的壓縮。

  垃圾收集器一般將托管堆中的對象分為3代,這可以通過調(diào)用GC.MaxGeneration得知,對象按照存在時間長短進(jìn)行分代,最短的分在第0代,最長的分在第2代,第2代中的對象往往是比較大的,第二代空間被稱作Large Object Heap,對于2代對象的回收,與第0、1代回收方式相比最大之一的不同在于,沒有了指針移動的壓縮過程。

  如下圖,第一次GC時,左邊第一列A-F表示內(nèi)存中的對象,位于淺藍(lán)色 區(qū)域,經(jīng)過Mark后,ACDF標(biāo)記為可用,Sweep過程清除了BE,Compact過程移動了ACDF,使之位于連續(xù)存儲區(qū)域中;第二次使用綠色做標(biāo)記;第三次GC使用藍(lán)色表示標(biāo)記;可以看出第三次GC過程沒有了指針移動的壓縮過程。

1.jpg
圖1 對象的回收

  ●性能影響分析

  這個過程看起來有點(diǎn)復(fù)雜,的確垃圾收集器的啟動是會占用一些CPU時間,從而影響系統(tǒng)的性能,但這種影響很有限,并且這些損失是有所值的。

  1.垃圾收集器并不是沒有規(guī)律的啟動,而是當(dāng)代齡達(dá)到一定觸發(fā)條件時啟動,而且垃圾收集器只是移動代齡較低的1、2代的資源,并不會移動LOH中的對象。這就在一定程度上避免了GC長時間鎖定線程導(dǎo)致的性能損失。

  2.GC有三種不同的工作模式,適用于不同環(huán)境的情況,并不是所有環(huán)境都是“使用掛起->查找與標(biāo)記->壓縮->恢復(fù)” 的流程。“Workstation GC with Concurrent”模式可以第0、1代的收集仍然是要暫時掛起應(yīng)用程序,在收集第2代時,會并行處理,具體原理是將Full GC過程切分成多個短暫子過程對線程進(jìn)行凍結(jié),在線程凍結(jié)時間之外,應(yīng)用程序仍然可以正常運(yùn)行。這主要通過將0代空間設(shè)置的很大,使Full GC時,CLR仍然能夠在0代中進(jìn)行內(nèi)存分配,如果Full GC時0代內(nèi)存也已用盡,那么應(yīng)用程序?qū)⒈粧炱,等待Full GC的完成。

上一篇:關(guān)注Visual Studio 2010全球首發(fā)
下一篇:三層最重要的也是“抽象”

熱門話題

招生熱線: 4008-0731-86 / 0731-82186801

學(xué)校地址: 長沙市天心區(qū)團(tuán)結(jié)路6號

Copyright © 2006 | 湖南大計(jì)信息科技有限公司 版權(quán)所有

湘ICP備14017520號-3

關(guān)注我們
在線咨詢
嘿,我來幫您!