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

.Net Framework垃圾收集具體算法詳解

開發(fā) 后端 算法
.Net Framework垃圾收集主要是在對象在、充滿時才會出現(xiàn)。我們可以便利所有的根,然后構造出一個包含所有可達對象的圖。

.Net Framework是由微軟提供的一款基于.NET開發(fā)的基礎環(huán)境。不過在這個編程平臺下,我們還可以使用其他各種語言來進行代碼的編寫,大大提高了程序員的開發(fā)效率。在這里就先來了解一下.Net Framework垃圾收集的相關算法。#t#

1..Net Framework垃圾收集只有在第0代對象充滿時才會出現(xiàn)。

2.每組應用程序都有一組根,一個根是一個存儲位置,其中包含著一個指向引用類型的內存指針。同時,當JIT編譯器編譯一個方法的IL代碼時,除產(chǎn)生本地CPU代碼外,JIT編譯器還會創(chuàng)建一個內部表,該表的每個條目包含一個方法的本地CPU指令的字節(jié)偏移范圍,及該范圍中的一組包含跟的內存地址。

3.當垃圾收集器開始執(zhí)行時,它先假設應用程序中沒有一個根引用著托管堆中的對象。然后,遍歷所有的根,構造出一個包含所有可達對象的圖。任何不在該圖中的對象都將是應用程序不可訪問的對象 ,也是可以被執(zhí)行垃圾收集的對象。

為什么.Net Framework垃圾收集的功能如此強大,而ANSI C++沒有采用它?

這是因為垃圾收集器必須能夠識別出應用程序的根,并且還要找到所有的對象指針。非托管C++允許我們進行類型轉換,而無從知道它真正引用的對象是什么。在CLR中,托管堆總能知道一個對象的實際類型,從而使其元數(shù)據(jù)信息來判斷一個對象的哪些成員引用著其他的對象。

任何封裝了非托管資源的類型,例如文件、網(wǎng)絡鏈接、套接字、互斥體等,都必須支持一種稱作終止化(Finalization)的操作。終止化操作允許一種資源在它所占用的內存被回收之前首先執(zhí)行一些清理工作。

如果一個封裝了非托管資源的類型沒有定義Finalize方法,那么這些托管資源將得不到關閉,從而導致某種程度的資源泄露,直到進程結束,這些非托管資源才會被操作系統(tǒng)回收。

Finalize方法的問題在于我們不能確定它會在何時被調用,而且它不是公有方法,因此不能顯式調用它。

我們可以通過顯示調用Dispose方法來釋放對象所封裝的非托管資源。

調用Dispose或Close方法只是在一個確定的時刻對對象占用的非托管資源執(zhí)行清理操作而已,但不會控制托管堆中對象所使用的內存的生存期。這意味著我們在調用過Dispose或Close方法之后,對象的內存仍然存在,只是對象被執(zhí)行資源清理后,不能再成功執(zhí)行某些方法而已。

C#的using語句:編譯時,編譯器會自動產(chǎn)生一個try塊和一個finally塊,在finally塊中,編譯器會產(chǎn)生代碼將變量轉型為一個Idisposable接口,并調用其上的Dispose方法。

但我們應謹慎使用C#的using語句,避免過早的執(zhí)行了資源清理

垃圾收集器中代齡的工作機制:CLR的托管堆支持3個代齡,但初始化時,它會為這三代選擇3個閾值容量,選擇閾值容量是為了提高系統(tǒng)性能,閾值容量越大,垃圾收集執(zhí)行的頻率也就越低。

另外,CLR垃圾收集器還有一個自調節(jié)的能力,會學習應用程序的行為,調節(jié)閾值容量,從而改變.Net Framework垃圾收集執(zhí)行的頻率,提高系統(tǒng)性能。

責任編輯:曹凱 來源: 博客園
相關推薦

2010-03-04 10:08:54

.Net垃圾收集

2009-06-15 16:14:40

Java垃圾收集算法GC

2010-03-04 14:33:11

.NET垃圾收集

2010-01-06 18:27:06

.Net Framew

2024-07-15 08:00:00

2010-01-06 16:45:42

.Net Framew

2009-07-09 09:28:19

.Net Micro

2012-01-09 16:00:56

2009-08-26 14:52:19

.NET Framew

2010-01-05 09:35:07

.Net Framew

2010-01-05 16:20:46

.NET Framew

2010-01-05 18:09:07

.NET Framew

2009-10-30 10:47:48

VB.NET垃圾收集器

2010-01-06 19:38:16

.NET Framew

2010-01-05 10:29:43

.NET Framew

2010-01-05 16:15:05

.NET Framew

2010-01-05 18:14:17

.NET Framew

2023-02-26 11:50:04

Hbase程序Oracle

2009-08-26 15:25:06

.NET Framew

2010-01-06 19:22:43

.NET Framew
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 黄色片亚洲 | 久久精品视频在线播放 | 久久www免费人成看片高清 | 天天综合国产 | 色综合视频 | 成人精品一区二区三区中文字幕 | 自拍偷拍亚洲视频 | 日本特黄特色aaa大片免费 | 成人h动漫精品一区二区器材 | 可以在线观看av的网站 | 国产亚洲精品成人av久久ww | 五月网婷婷 | 国产欧美日韩一区二区三区在线观看 | 亚洲欧美日韩在线 | 亚洲天堂中文字幕 | 婷婷丁香在线视频 | 最近日韩中文字幕 | 日韩中文在线观看 | 国产精品欧美一区二区三区不卡 | 国产成人一区二区三区 | 围产精品久久久久久久 | 国产不卡在线播放 | 成人免费视频网站在线看 | 久久精品亚洲精品国产欧美kt∨ | 国产日韩欧美激情 | 一区观看 | 国产精品国产 | 亚洲va欧美va人人爽午夜 | 欧美一区视频在线 | 可以免费观看的av | 9色网站 | 国产一区二区在线播放视频 | 一区二区三区免费网站 | 久久免费精品 | 福利片在线 | 久久er99热精品一区二区 | 91精品国产综合久久香蕉922 | 国产精品久久久久久久岛一牛影视 | 色视频网站 | 中文字幕成人av | 亚洲欧美日韩久久 |