亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

.NET Framework 的垃圾回收器管理應用程序的內存分配和釋放

發布時間:2020-04-10 05:29:05 來源:網絡 閱讀:994 作者:賀俊峰 欄目:編程語言
C#中使用 new 運算符創建對象時,運行庫都從托管堆為該對象分配內存。只要托管堆中有地址空間可用,運行庫就會繼續為新對象分配空間。
但是,內存不是無限大的。最終,垃圾回收器必須執行回收以釋放一些內存。垃圾回收器優化引擎根據正在進行的分配情況確定執行回收的最佳時間。當垃圾回收器執行回收時,它檢查托管堆中不再被應用程序使用的對象并執行必要的操作來回收它們占用的內存。
 
實例化新對象過程: 如圖
.NET Framework 的垃圾回收器管理應用程序的內存分配和釋放 
         首先、計算字段所需空間和對象所需空間。
                   對象所需空間包括兩部分,同步塊索引和類型對象指針。
         再次、分配物理內存,新對象指針指象下一個可用內存區域。
 
 
垃圾回收過程 如下圖
.NET Framework 的垃圾回收器管理應用程序的內存分配和釋放
 
       標記階段:從根標記遍歷到的對象。
       壓縮階段:釋放沒有標記的對象內存,調整存在對象的位置
 
代(Generation)是CLR垃圾收集器的一種機制,它存在的惟一目的就是提高應用程序性能。
CLR初始化時,托管堆中沒有任何對象,此時添加對象是,為第0代對象。
 
CLR支持3代內存
0代對象預算容量為256k
1代對象預算容量為2M
2代對象預算容量為10M
 .NET Framework 的垃圾回收器管理應用程序的內存分配和釋放
 
         第一次初始化是為第0代,當托管堆中第0代放滿時,如果有新對象加入,則觸發CLR
回收垃圾器把第0代中沒有使用的對象清理掉,再把第0代的對象挪到第1代中,之后再把新對象添加托管堆的第0代中。
 
.NET Framework 的垃圾回收器管理應用程序的內存分配和釋放

         如果第0代放滿而第1代沒放滿,CLR回收器只把第0代中不在使用的對象清理掉,而第1代中的不變,之后再把第0代挪入第1代,把新對象添加到第0
 
         當第1代和第1代也放滿時,如果再有新對象加入,則觸發CLR回收垃圾器把第0代和第1代中沒有使用的對象清理掉,再把第0代的對象挪到第1代中,第1代的對象挪到第2代中,之后再把新對象添加托管堆的第0代中。
依次類推
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

仪陇县| 东乌| 青龙| 新丰县| 兰溪市| 若羌县| 大冶市| 榆社县| 宁河县| 天气| 洪雅县| 常德市| 虎林市| 太保市| 湛江市| 区。| 泸溪县| 富宁县| 武川县| 江北区| 基隆市| 石台县| 金门县| 拉萨市| 边坝县| 林芝县| 鹿泉市| 嘉义县| 搜索| 镇远县| 富平县| 江孜县| 岚皋县| 佛冈县| 滨州市| 冷水江市| 平乐县| 津市市| 蚌埠市| 交城县| 清丰县|