.NETFramework的垃圾回收器管理應(yīng)用程序的內(nèi)存分配和釋放

C#中使用 new 運(yùn)算符創(chuàng)建對(duì)象時(shí),運(yùn)行庫(kù)都從托管堆為該對(duì)象分配內(nèi)存。只要托管堆中有地址空間可用,運(yùn)行庫(kù)就會(huì)繼續(xù)為新對(duì)象分配空間。
但是,內(nèi)存不是無(wú)限大的。最終,垃圾回收器必須執(zhí)行回收以釋放一些內(nèi)存。垃圾回收器優(yōu)化引擎根據(jù)正在進(jìn)行的分配情況確定執(zhí)行回收的最佳時(shí)間。當(dāng)垃圾回收器執(zhí)行回收時(shí),它檢查托管堆中不再被應(yīng)用程序使用的對(duì)象并執(zhí)行必要的操作來(lái)回收它們占用的內(nèi)存。
 
實(shí)例化新對(duì)象過(guò)程: 如圖
.NET Framework 的垃圾回收器管理應(yīng)用程序的內(nèi)存分配和釋放 
         首先、計(jì)算字段所需空間和對(duì)象所需空間。
                   對(duì)象所需空間包括兩部分,同步塊索引和類型對(duì)象指針。
         再次、分配物理內(nèi)存,新對(duì)象指針指象下一個(gè)可用內(nèi)存區(qū)域。
 
 
垃圾回收過(guò)程 如下圖
.NET Framework 的垃圾回收器管理應(yīng)用程序的內(nèi)存分配和釋放
 
      標(biāo)記階段:從根標(biāo)記遍歷到的對(duì)象。
      壓縮階段:釋放沒(méi)有標(biāo)記的對(duì)象內(nèi)存,調(diào)整存在對(duì)象的位置
 
代(Generation)是CLR垃圾收集器的一種機(jī)制,它存在的惟一目的就是提高應(yīng)用程序性能。
CLR初始化時(shí),托管堆中沒(méi)有任何對(duì)象,此時(shí)添加對(duì)象是,為第0代對(duì)象。
 
CLR支持3代內(nèi)存
0代對(duì)象預(yù)算容量為256k
1代對(duì)象預(yù)算容量為2M
2代對(duì)象預(yù)算容量為10M
 .NET Framework 的垃圾回收器管理應(yīng)用程序的內(nèi)存分配和釋放
 
         第一次初始化是為第0代,當(dāng)托管堆中第0代放滿時(shí),如果有新對(duì)象加入,則觸發(fā)CLR
回收垃圾器把第0代中沒(méi)有使用的對(duì)象清理掉,再把第0代的對(duì)象挪到第1代中,之后再把新對(duì)象添加托管堆的第0代中。
 
.NET Framework 的垃圾回收器管理應(yīng)用程序的內(nèi)存分配和釋放

         如果第0代放滿而第1代沒(méi)放滿,CLR回收器只把第0代中不在使用的對(duì)象清理掉,而第1代中的不變,之后再把第0代挪入第1代,把新對(duì)象添加到第0
 
         當(dāng)?shù)?font face=Calibri>1代和第1代也放滿時(shí),如果再有新對(duì)象加入,則觸發(fā)CLR回收垃圾器把第0代和第1代中沒(méi)有使用的對(duì)象清理掉,再把第0代的對(duì)象挪到第1代中,第1代的對(duì)象挪到第2代中,之后再把新對(duì)象添加托管堆的第0代中。
依次類推

當(dāng)前題目:.NETFramework的垃圾回收器管理應(yīng)用程序的內(nèi)存分配和釋放
分享路徑:http://bm7419.com/article42/ipoohc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、App設(shè)計(jì)企業(yè)建站、網(wǎng)站排名、營(yíng)銷型網(wǎng)站建設(shè)、響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)