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

深入挖掘CLR內存管理機制原理

開發 后端
文章主要介紹了CLR內存管理 ,C++的許多程序員都中,最頭疼的是對內存的分配和管理,而CLR內存管理機制在運行時,GC可以獲取對象是否被引用的信息。如果一個對象不再被引用,則通過GC進行自動回收。

C++的許多程序員都中,最頭疼的是對內存的分配和管理。用.net就不一樣了。.net引用了垃圾回收(GC)功能,它替代了程序員對于清除無用對象的工作。雖然在大多數情況下,內存的回收我們不用再去理會,但如果能夠在程序中適時地添加一些內存管理的工作,可以使程序更加的優化,來看看CLR內存管理機制 。

由于CLR(公共語言運行時)可以知道在系統中的所有對象引用,而CLR內存管理機制在運行時,GC可以獲取對象是否被引用的信息。如果一個對象不再被引用,則通過GC進行自動回收。
不過GC回收的條件是,當特定資源不夠用時才執行。如果我們希望自己控制,也可以顯示地指示GC工作。方法是:

  1. System.GC.Collect(); 

GC在進行回收時,先會識別對象是否被引用,并標記出對象的特征。只有不被引用的對象才被回收。為避免堆碎片,GC在回收了對象后,會重新分配內存,并對未被回收的對象進行重定位。這必然導致GC在回收時會導致系統運行性能的降低。

適時的進行人工干預內存分配,是比較好的選擇。我們知道在C++中,對于創建的類中,有相對應的析構函數進行內存的刪除。在C#中,也可以采用同樣的方式。當實例化一個類對象后,刪除它,則自動調用其析構函數。CLR提供了對象終結(object finalization)的機制,引入了Finalize方法。不過在C#中,不能直接實現Finalize方法,而是在析構函數中調用基類的Finalize()方法。

GC的回收機制是異步操作,我們可以使用CLR提供的Dispose()方法實現對每一個對象的刪除操作。Dispose()方法由IDiposable接口提供。因此對于將要實例化的類對象,實現Dispose操作,必須使類實現該接口,并提供Dispose()方法。

  1. public class Garbage:IDisposable//實現該接口  
  2. {  
  3. public void Dispose()//提供Dispose()方法;  
  4. {  
  5. GC.SuppressFinalize(this);//回收該對象;  
  6. }  
  7. ~Garbage()//析構函數;  
  8. {  
  9. Dispose();  
  10. }  
  11. }  


不過更好的方案是使用using語句。將對象的實例放到using中,一旦using結束,系統會自動清楚該對象。

  1. using (Garbage g = new Garbage())  
  2. {  
  3. //執行操作;  

不過要注意的是在using語句中實例的對象,其類也必須要實現IDisposable接口和Dispose()方法。另外,由于IComponent擴展了IDisposable,因此IComponent類型始終是IDisposable類型。所以我們開發的組件類型可以用在using中,或者使用Dispose()方法。所以,系統提供的組件如DataSet,DataTable等的實例也可以實現這種方式來清除對象。以上就是CLR內存管理學會了嗎?

【編輯推薦】

  1. 全面概括SQL SERVER調用CLR類庫實現步驟
  2. CLR函數壓縮NTEXT類型字段實例講解
  3. CLR函數實現字符串排序七步通
  4. CLR線程池教程四大功能詳解
  5. 全面解析CLR是什么一點通
責任編輯:田樹 來源: 博客
相關推薦

2013-09-29 15:11:46

Linux運維內存管理

2010-07-23 09:34:48

Python

2022-06-01 16:01:58

MySQL內存管理系統

2010-09-26 13:23:13

JVM內存管理機制

2010-12-10 15:40:58

JVM內存管理

2011-06-29 17:20:20

Qt 內存 QOBJECT

2020-11-08 14:32:01

JavaScript變量內存管理

2022-02-28 10:25:17

Python參數傳遞拷貝

2016-10-09 14:41:40

Swift開發ARC

2020-08-18 19:15:44

Redis內存管理

2019-01-23 17:08:52

Python內存管理RealPython

2011-08-18 13:28:35

Objective-C內存

2009-09-02 09:23:26

.NET內存管理機制

2010-09-27 13:26:31

JVM內存管理機制

2010-01-06 10:23:47

.NET Framew

2009-07-08 15:10:00

Servlet會話管理

2021-02-07 09:02:28

內存管理length

2009-11-05 09:59:59

WCF綁定

2016-09-06 22:05:41

HttpCookieWeb

2009-09-23 17:48:00

Hibernate事務
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美黄色一区 | 欧美久久久久 | 国产精品国产精品国产专区不卡 | 日本午夜免费福利视频 | 黄色网址在线免费观看 | 亚洲 中文 欧美 日韩 在线观看 | 麻豆一区二区三区 | 欧美二区在线 | 成人国产一区二区三区精品麻豆 | 黄色在线播放视频 | 欧美精产国品一二三区 | 日日夜夜影院 | 黄网站免费入口 | 福利成人| 91精品久久久久久久久中文字幕 | 天天干天天谢 | 色婷婷一区二区三区四区 | 日批免费看 | 在线欧美一区 | 欧美精品a∨在线观看不卡 欧美日韩中文字幕在线播放 | 亚洲一区二区在线免费观看 | 国产精品美女www | 国产在线观看 | 日本免费在线观看视频 | 国产中文 | 另类视频在线 | 精品中文视频 | 在线观看精品视频网站 | 亚洲国产成人av好男人在线观看 | 国产高清精品一区二区三区 | 国产精品久久久久久久久久久久冷 | 久久99精品久久久久久噜噜 | 久久久久久亚洲 | 羞羞的视频免费在线观看 | 日本精品一区二区三区视频 | 日韩超碰在线 | 欧美另类视频 | 欧美一区免费 | 欧美日韩一 | 午夜爽爽男女免费观看hd | 精品视频在线一区 |