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

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

ID:35597866

大?。?71.50 KB

頁數(shù):18頁

時間:2019-03-30

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

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

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

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

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

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

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

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

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

當前文檔最多預覽五頁,下載文檔查看全文

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

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