畢業(yè)論文外文翻譯--NET資源管理

畢業(yè)論文外文翻譯--NET資源管理

ID:35597866

大?。?71.50 KB

頁(yè)數(shù):18頁(yè)

時(shí)間:2019-03-30

畢業(yè)論文外文翻譯--NET資源管理_第1頁(yè)
畢業(yè)論文外文翻譯--NET資源管理_第2頁(yè)
畢業(yè)論文外文翻譯--NET資源管理_第3頁(yè)
畢業(yè)論文外文翻譯--NET資源管理_第4頁(yè)
畢業(yè)論文外文翻譯--NET資源管理_第5頁(yè)
資源描述:

《畢業(yè)論文外文翻譯--NET資源管理》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫(kù)。

1、武漢科技大學(xué)本科畢業(yè)論文外文翻譯.NETResourceManagementBill?WagnerEffectiveC#:50SpecificWaystoImproveYourC#,Chapter2,.NETResourceManagement,Bill?Wagner,AddisonWesleyProfessional,2004,77~115.NET資源管理比爾·瓦格拉EffectiveC#中文版改善C#程序的50種方法,第二章,.NET資源管理,比爾·瓦格拉,2004,77~11517武漢科技大學(xué)本科畢業(yè)論文外文翻譯一個(gè)簡(jiǎn)單的事實(shí):.Net應(yīng)用程序是在一個(gè)托管的環(huán)境

2、里運(yùn)行的,這個(gè)環(huán)境和不同的設(shè)計(jì)器有很大的沖突,這就才有了EffectiveC#。極大限度上的討論這個(gè)環(huán)境的好處,須要把你對(duì)本地化環(huán)境的想法改變?yōu)?NetCLR。也就意味著要明白.Net的垃圾回收器。在你明白這一章里所推薦的內(nèi)容時(shí),有必要對(duì).Net的內(nèi)存管理環(huán)境有個(gè)大概的了解。那我們就開(kāi)始大概的了解一下吧。垃圾回收器(GC)為你控制托管內(nèi)存。不像本地運(yùn)行環(huán)境,你不用負(fù)責(zé)對(duì)內(nèi)存泄漏,不定指針,未初始化指針,或者一個(gè)其它內(nèi)存管理的服務(wù)問(wèn)題。但垃圾回收器前不是一個(gè)神話(huà):你一樣要自己清理。你要對(duì)非托管資源負(fù)責(zé),例如文件句柄,數(shù)據(jù)鏈接,GDI+對(duì)象,COM對(duì)象,以及其它一些系統(tǒng)對(duì)

3、象。這有一個(gè)好消息:因?yàn)镚C管理內(nèi)存,明確的設(shè)計(jì)風(fēng)格可以更容易的實(shí)現(xiàn)。循環(huán)引用,不管是簡(jiǎn)單關(guān)系還是復(fù)雜的網(wǎng)頁(yè)對(duì)象,都非常容易。GC的標(biāo)記以及嚴(yán)謹(jǐn)?shù)母咝惴梢詸z測(cè)到這些關(guān)系,并且完全的刪除不可達(dá)的網(wǎng)頁(yè)對(duì)象。GC是通過(guò)對(duì)從應(yīng)用程序的根對(duì)象開(kāi)始,通過(guò)樹(shù)形結(jié)構(gòu)的“漫游”來(lái)斷定一個(gè)對(duì)象是否可達(dá)的,而不是強(qiáng)迫每個(gè)對(duì)象都保持一些引用跟蹤,COM就是這樣的。DataSet就是一個(gè)很好的例子,展示了這樣的算法是如何簡(jiǎn)化并決定對(duì)象的所屬關(guān)系的。DataSet是一個(gè)DataTable的集合,而每一個(gè)DataTable又是DataRow的集合,每一個(gè)DataRow又是DataItem的集合

4、,DataColum定義了這些類(lèi)型的關(guān)系。這里就有一些從DataItem到它的列的引用。而同時(shí),DataTime也同樣有一個(gè)引用到它的容器上,也就是DataRow。DataRow包含引用到DataTable,最后每個(gè)對(duì)象都包含一個(gè)引用到DataSet。如果這還不夠復(fù)雜,那可以創(chuàng)建一個(gè)DataView,它提供對(duì)經(jīng)過(guò)過(guò)濾后的數(shù)據(jù)表的順序訪(fǎng)問(wèn)。這些都是由DataViewManager管理的。所有這些貫穿網(wǎng)頁(yè)的引用構(gòu)成了DataSet。釋放內(nèi)存是GC的責(zé)任。因?yàn)?Net框架的設(shè)計(jì)者讓你不必釋放這些對(duì)象,這些復(fù)雜的網(wǎng)頁(yè)對(duì)象引用不會(huì)造成問(wèn)題。沒(méi)有必須關(guān)心這些網(wǎng)頁(yè)對(duì)象的合適的釋放順

5、序,這是GC的工作。GC的設(shè)計(jì)結(jié)構(gòu)可以簡(jiǎn)化這些問(wèn)題,它可以識(shí)別這些網(wǎng)頁(yè)對(duì)象就是垃圾。在應(yīng)用程序結(jié)束了對(duì)DataSet的引用后,沒(méi)有人可以引用到它的子對(duì)象了(譯注:就是DataSet里的對(duì)象再也引用不到了)。因此,網(wǎng)頁(yè)里還有沒(méi)有對(duì)象循環(huán)引用DataSet,DataTables已經(jīng)一點(diǎn)也不重要了,因?yàn)檫@些對(duì)象在應(yīng)用程序都已經(jīng)不能被訪(fǎng)問(wèn)到了,它們是垃圾了。垃圾回收器在它獨(dú)立的線(xiàn)程上運(yùn)行,用來(lái)從你的程序里移除不使用的內(nèi)存。而且在每次運(yùn)行時(shí),它還會(huì)壓縮托管堆。壓縮堆就是把托管堆中活動(dòng)的對(duì)象移到一起,這樣就可以空出連續(xù)的內(nèi)存。圖2.1展示了兩個(gè)沒(méi)有進(jìn)行垃圾回收時(shí)的內(nèi)存快照。所有的

6、空閑內(nèi)存會(huì)在垃圾回收進(jìn)行后連續(xù)起來(lái)。17武漢科技大學(xué)本科畢業(yè)論文外文翻譯圖2.1垃圾回收器不僅僅是移動(dòng)不使用的內(nèi)存,還移除動(dòng)其它的對(duì)象,從而壓縮使用的內(nèi)存,讓出最多的空閑內(nèi)存。正如你剛開(kāi)始了解的,垃圾回收器的全部責(zé)任就是內(nèi)存管理。但,所有的系統(tǒng)資源都是你自己負(fù)責(zé)的。你可以通過(guò)給自己的類(lèi)型定義一個(gè)析構(gòu)函數(shù),來(lái)保證釋放一些系統(tǒng)資源。析構(gòu)函數(shù)是在垃圾回收器把對(duì)象從內(nèi)存移除前,由系統(tǒng)調(diào)用的。你可以,也必須這樣來(lái)釋放任何你所占用的非托管資源。對(duì)象的析構(gòu)函數(shù)有時(shí)是在對(duì)象成為垃圾之后調(diào)用的,但是在內(nèi)存歸還之前。這個(gè)非確定的析構(gòu)函數(shù)意味著在你無(wú)法控制對(duì)象析構(gòu)與停止使用之間的關(guān)系(譯注

7、:對(duì)象的析構(gòu)與對(duì)象的無(wú)法引用是兩個(gè)完全不同的概念。關(guān)于GC,本人推薦讀者參考一下Jeffrey的".Net框架程序設(shè)計(jì)(修訂版)"中討論的垃圾回收器)。對(duì)C++來(lái)說(shuō)這是個(gè)重大的改變,并且這在設(shè)計(jì)上有一個(gè)重大的分歧。有經(jīng)驗(yàn)的C++程序員寫(xiě)的類(lèi)總在構(gòu)造函數(shù)內(nèi)申請(qǐng)內(nèi)存并且在析構(gòu)函數(shù)中釋放它們://好的C++,壞的C#:classCriticalSection{public:?//構(gòu)造系統(tǒng)需要的資源?CriticalSection()?{EnterCriticalSection();?}?//銷(xiāo)毀資源?~CriticalSection()?{ExitCrit

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶(hù)上傳,版權(quán)歸屬用戶(hù),天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶(hù)請(qǐng)聯(lián)系客服處理。