成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C#托管資源學(xué)習(xí)經(jīng)驗

開發(fā) 后端
這里介紹C#托管資源和非托管資源的管理統(tǒng)一起來,造成概念割裂。C++的定位之一是底層開發(fā)能力,所以不難理解GC并沒有成為C++的語言特性。

C#托管資源和非托管資源

在C#中,資源分為托管資源和非托管資源兩種。GC在回收無用對象資源時,可以自動回收托管資源(比如托管內(nèi)存),但對于非托管資源(比如Socket、文件、數(shù)據(jù)庫連接)必須在程序中顯式釋放。

托管資源的回收首先需要GC識別無用對象,然后回收其資源。一般無用對象是指通過當(dāng)前的系統(tǒng)根對象和調(diào)用堆棧對象不可達(dá)的對象。對象有一個重要的特點導(dǎo)致無用對象判斷的復(fù)雜性:對象間的相互引用!如果沒有相互引用,就可以通過“引用計數(shù)”這種簡單高效的方式實現(xiàn)無用對象的判斷,并實現(xiàn)實時回收。正是由于相互引用的存在導(dǎo)致GC需要設(shè)計更為復(fù)雜的算法,這樣帶來的***問題在于喪失了資源回收的實時性,而變成一種不確定的方式。

對于非托管資源的釋放,C#提供了兩種方式:

1.Finalizer:寫法貌似C++的析構(gòu)函數(shù),本質(zhì)上卻相差甚遠(yuǎn)。Finalizer是對象被GC回收之前調(diào)用的終結(jié)器,初衷是在這里釋放非托管資源,但由于GC運行時機的不確定性,通常會導(dǎo)致非托管資源釋放不及時。另外,F(xiàn)inalizer可能還會有意想不到的副作用,比如:被回收的對象已經(jīng)沒有被其他可用對象所引用,但Finalizer內(nèi)部卻把它重新變成可用,這就破壞了GC垃圾收集過程的原子性,增大了GC開銷。

2.Dispose Pattern:C#提供using關(guān)鍵字支持Dispose Pattern進行資源釋放。這樣能通過確定的方式釋放非托管資源,而且using結(jié)構(gòu)提供了異常安全性。所以,一般建議采用Dispose Pattern,并在Finalizer中輔以檢查,如果忘記顯式Dispose對象則在Finalizer中釋放資源。

可以說,GC為程序帶來安全方便的同時也付出了不小的代價:一則喪失了托管資源回收的實時性,這在實時系統(tǒng)和資源受限系統(tǒng)中是致命的;二則沒有把C#托管資源和非托管資源的管理統(tǒng)一起來,造成概念割裂。C++的定位之一是底層開發(fā)能力,所以不難理解GC并沒有成為C++的語言特性。雖然我們在C++0x和各種第三方庫都能看到GC的身影,但GC對于C++來講并不是那么重要,至多是一個有益的補充。C++足以傲視C,并和C# GC一較高下的是它的RAII。以上介紹C#托管資源和非托管資源

【編輯推薦】

  1. C#局部類型介紹
  2. C#固定指針簡單介紹
  3. 淺析C# FTP WebRequest對象
  4. C#分部方法的應(yīng)用場景
  5. 簡單介紹VB.NET和C#
責(zé)任編輯:佚名 來源: 博客園
相關(guān)推薦

2009-09-02 10:39:00

C#釋放托管資源

2009-08-13 18:13:27

C#學(xué)習(xí)經(jīng)驗

2009-08-19 16:36:29

C#管道技術(shù)

2009-08-31 15:48:02

C# Singleto

2009-08-27 14:44:11

C# interfac

2009-08-20 15:33:03

C#跳躍語句

2009-08-26 17:24:49

C# Mutex對象

2009-08-25 16:14:06

C#使用ADOX

2009-08-24 17:06:37

C#字符串

2009-08-28 16:43:57

C#多線程學(xué)習(xí)

2009-08-31 16:51:11

C# Main()方法

2009-08-28 10:31:47

C#字符ASCII碼

2009-08-27 09:27:49

C#擴展方法

2009-08-12 15:55:12

C#接口定義

2009-08-27 13:45:45

C#別名指示符

2009-08-11 14:20:41

C# .NET學(xué)習(xí)經(jīng)驗

2009-09-04 14:30:28

C#讀取BLOB數(shù)據(jù)

2009-08-24 17:34:14

C#創(chuàng)建XML Web

2009-08-24 16:02:10

C# Windows應(yīng)

2009-08-24 15:50:23

C# 泛型C# 泛型委托
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 久久久久久国产精品久久 | 成人精品一区亚洲午夜久久久 | 中文字幕亚洲精品在线观看 | 国产黄色大片 | 99视频免费 | 日韩精品一区二区三区在线 | 日韩视频免费看 | 天天干天天操天天看 | 国产一区精品 | av超碰 | 亚洲一区二区精品 | 九九热在线免费观看 | www.成人.com| 夜夜干夜夜操 | 欧美电影在线观看网站 | 亚洲成人福利视频 | 国产一区二区三区免费视频 | 美人の美乳で授乳プレイ | 天天干亚洲 | 一区二区精品 | 久久99久久| 成人av一区 | 午夜精品一区 | 在线免费黄色小视频 | 欧美综合久久久 | 亚洲电影第1页 | 欧美日韩一区二区在线观看 | 久久精品无码一区二区三区 | 欧美日韩在线免费观看 | 黄色a三级 | 美人の美乳で授乳プレイ | 日本免费黄色 | 国产综合欧美 | 日韩在线成人 | 女人毛片a毛片久久人人 | 高清成人免费视频 | 日韩亚洲一区二区 | 久久国产精品视频 | 精品免费国产一区二区三区四区介绍 | 一区二区三区av | 99pao成人国产永久免费视频 |