日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第二节:垃圾回收期算法简介

發布時間:2024/9/5 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第二节:垃圾回收期算法简介 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

垃圾回收器檢查托管堆中是否有應用程序不再使用的對象,如果有,他們使用的內存就可以回收(如果一次垃圾回收之后堆中仍然沒有可用的內存,new操作符就會拋出一個OutOfMemoryException)。垃圾回收器如何知道應用程序正在使用一個對象呢?這個說起來比較復雜。

每個應用程序都包含一組根。每個根都是一個存儲位置,其中包含指向引用類型對象的一個指針。該指針要么引用托管堆中的對象,要么為null,例如:類型中定義的任何靜態字段被認為是一個根。除此之外,任何方法的參數和局部變量也被認為是一個根。只有引用類型的變量才能被認為成根;值類型的變量永遠不被認為成根。

垃圾回收期開始執行時,它假設堆中所有對象都是垃圾,換句話說,它假設線程棧中沒有引用堆中對象的變量,沒有CPU寄存器引用堆中的對象,也沒有靜態字段引用堆中的對象。垃圾回收期第一階段就是所謂的Marking(標記)階段。垃圾回收期沿著線程棧上行檢查所有根。如果發現一個根引用一個對象,就在對象的“同步塊索引字段”上做一個標記。例如:垃圾回收器發現一個局部變量指向堆中的一個對象。下圖展示了一個堆,其中包含幾個已經分配的對象。應用程序的根直接引用對象A、C、D、F。

所有這些對象都以標記。標記對象D時垃圾回收期發現這個對象含有一個引用了對象H的字段,造成對象H也被標記。垃圾回收期就是這樣,以遞歸的形式遍歷所有可達的對象。

?

標記好根和他引用的字段之后,垃圾回收器檢查下一個根,并繼續標記對象。如果垃圾回收期試圖標記一個先前標記過的對象。就會停止沿著這個路徑走下去,這個行為有兩個目的。首先垃圾回收期不會多遍歷一組對象,所以性能能得到提升。其次,如果存在對象的循環鏈表,可以避免陷入無限循環。

檢查好所有根之后,堆中將包含一組已標記的對象和未標記的對象。已標記的對象是通過應用程序可達的對象,而未標記的對象時不可達的,不可達的對象被認為是垃圾,他們占據的內存就可以回收,現在垃圾回收期開始第二個階段壓縮階段。這個階段垃圾回收器線性的遍歷堆,以尋求未標記對象的連續內存塊。如果發現的內存塊比較小,垃圾回收期會忽略他們,如果發現的內存塊比較大,垃圾回收器就會把非垃圾的對象移動到這里以壓縮棧。

?

很自然,移動內存中的對象之后,包含指向這些對象中的指針變量將變的無效。所以垃圾回收期現在開始重現訪問應用程序的根,并修改他們來指向新內存的地址。另外,如果對象中的字段指向的是另一個已移動的對象的字段,垃圾回收期也要負責修正這些字段的值。堆內存壓縮之后,托管堆得NextObjPtr指針指向緊接在最后一個非垃圾回收之后的位置 ,下圖是垃圾回收之后的托管堆。

?

?

如你所見,垃圾回收期造成顯著的性能損失,這是使用托管堆得主要缺點。但是需要注意的是,垃圾回收期只有在0代已滿的時候才回收。在此之前,托管堆得性能遠遠高于C運行時。最后,CLR的垃圾回收期提供了一些特殊的優化措施,可以大幅提高垃圾回收的性能。(后面講說代的概念)

作為程序員,我們從前面的討論中得出兩個重要的認識。第一點,不必自己寫代碼來管理應用程序所用的對象的生存期。第二點,前面一章描素的bug將不復存在。首先,不可能再發生對象泄露的情況。因為任何對象只要應用程序沒有根引用它,都會在某個時刻被垃圾回收期回收,所以應用程序不可能發生內存泄露的情況,另外應用程序也不可能再訪問已經釋放的對象。其次,不可能訪問一個已經釋放的對象。這是因為如果對象可達,就不會被釋放;如果它不可達,應用程序就沒辦法訪問它。另外,由于垃圾回收器導致了內存的壓縮,所以托管對象不可能造成托管堆進程虛擬空間地址的碎片化。如果是非托管代碼,地址空間的碎片化可能非常嚴重。但是使用托管堆是這個問題就不發生了,另外是在使用大對象的時候,托管堆仍然有可能碎片化。

轉載于:https://www.cnblogs.com/bingbinggui/p/4379353.html

總結

以上是生活随笔為你收集整理的第二节:垃圾回收期算法简介的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久99精品久久久 | 91看片黄| 神马久久网站 | 熟女丝袜一区 | 欧美三级午夜理伦三级 | 中文在线а√天堂官网 | 超碰人人91 | 原创av| 国产美女无遮挡免费视频 | 人妻 日韩 欧美 综合 制服 | 亚洲欧洲国产精品 | 中文字幕精品亚洲 | 国产精品久久久久久久久久辛辛 | 中文字幕在线播放一区二区 | 国产在线看一区 | 夜色福利| 国产高清免费在线 | 亚洲三区在线观看无套内射 | 免费看成人av | 国产精品色在线 | 69久久久久 | 国产精品香蕉在线观看 | 一级 黄 色 片69 | 婷婷综合av | 妺妺窝人体色WWW精品 | 国产精品第12页 | 亚洲一区中文字幕在线观看 | 中国黄色小视频 | 国产黄色精品视频 | 亚洲综合不卡 | 国产免费高清视频 | 一区二区三区在线 | 国产经典毛片 | 中文精品久久久久人妻不卡 | 国产精品高潮呻吟久久av野狼 | 亚洲国产成人精品视频 | 日本中文字幕一区 | 色天使在线视频 | 久久精品国产精品 | 97性视频| 看a网站| 99精品欧美 | 国产成人短视频在线观看 | 成人网视频 | 日本在线免费播放 | 有码视频在线观看 | 黄网站在线观 | 毛片无限看 | 日韩高清片 | 久久香蕉网站 | 男人av影院| 狠狠爱视频 | 日韩激情视频在线 | 骚虎av | 成片免费观看 | 国产永久免费视频 | 99re这里只有精品66 | 国产精品永久免费观看 | 欧美日韩亚洲在线 | 黄色网页免费在线观看 | 日韩色网站 | 啦啦啦免费高清视频在线观看 | 星铁乱淫h侵犯h文 | 亚洲男人网| 午夜影院污 | 欧美一卡二卡在线 | 短裙公车被强好爽h吃奶视频 | 在线观看黄色国产 | 蜜臀av一区二区三区激情综合 | 重囗味sm一区二区三区 | 国产免费观看一区 | av高清在线免费观看 | 中文字幕一区二区在线老色批影视 | 亚洲一二三区av | 亚洲免费观看高清在线观看 | 亚欧精品视频一区二区三区 | 国产福利视频网站 | 伊人宗合 | 日韩av成人在线观看 | 中国少妇色 | 成人入口| 日本在线黄色 | 黄色三级免费观看 | 欧美揉bbbbb揉bbbbb| 国产猛男猛女超爽免费视频 | 熟女视频一区二区三区 | 久久久久一区二区三区 | 自拍偷拍第3页 | 中文字幕av影院 | 凹凸av在线 | 就去吻综合 | 久久久久久久九九九九 | 古代玷污糟蹋np高辣h文 | 啦啦啦av | 亚洲视频一 | 麻豆网站在线 | 国产一区二区三区视频免费观看 | 免费国产一区二区 | 日韩美女一区二区三区 |