91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

java垃圾回收算法中復制算法的原理是什么

發布時間:2022-01-14 11:01:58 來源:億速云 閱讀:125 作者:iii 欄目:大數據

今天小編給大家分享一下java垃圾回收算法中復制算法的原理是什么的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

算法原理

復制算法首先將或者的內存空間分為2塊,每次只使用其中一塊,在垃圾會搜時將正在使用的內存中的存活對象復
制到未被使用的內存塊中,之后清楚正在使用的內存塊中的所有對象,交換2個內存的角色,最后完成垃圾回收。

java垃圾回收算法中復制算法的原理是什么  
image

年輕代中的GC

HotSpot JVM把年輕代分為了三部分:1個Eden區和2個Survivor區(分別叫fromto)。默認比例為8:1,為啥默認會是這個比例,接下來我們會聊到。一般情況下,新創建的對象都會被分配到Eden區(一些大對象特殊處理),這些對象經過第一次Minor GC后,如果仍然存活,將會被移到Survivor區。對象在Survivor區中每熬過一次Minor GC,年齡就會增加1歲,當它的年齡增加到一定程度時,就會被移動到年老代中。

因為年輕代中的對象基本都是朝生夕死的(80%以上),所以在年輕代的垃圾回收算法使用的是復制算法,復制算法的基本思想就是將內存分為兩塊,每次只用其中一塊,當這一塊內存用完,就將還活著的對象復制到另外一塊上面。復制算法不會產生內存碎片。

GC開始的時候,對象只會存在于Eden區和名為“From”的Survivor區Survivor區“To”是空的。緊接著進行GCEden區中所有存活的對象都會被復制到“To”,而在“From”區中,仍存活的對象會根據他們的年齡值來決定去向。年齡達到一定值(年齡閾值,可以通過-XX:MaxTenuringThreshold來設置)的對象會被移動到年老代中,沒有達到閾值的對象會被復制到“To”區域。經過這次GC后,Eden區From區已經被清空。這個時候,“From”和“To”會交換他們的角色,也就是新的“To”就是上次GC前的“From”,新的“From”就是上次GC前的“To”。不管怎樣,都會保證名為To的Survivor區域是空的。Minor GC會一直重復這樣的過程,直到“To”區被填滿,“To”區被填滿之后,會將所有對象移動到年老代中。

存在問題

由于JVM中的絕大多數對象都是瞬時狀態的,生命周期非常短暫,所以復制算法被廣泛應用于年輕代中。分區、復制的思路不僅大幅提升了垃圾回收的效率,而且也將原本復雜的內存分配算法變的前所未有的簡明扼要(既然每次內存回收都是對整個半區空間的回收,內存分配時也就不用考慮內存碎片等復雜情況,只要移動堆頂指針,按順序分配內存就可以了)。
不過在垃圾收集技術中,復制算法提高效率的代價是認為的將可用內存縮小了一半。

以上就是“java垃圾回收算法中復制算法的原理是什么”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

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

AI

奉节县| 朝阳区| 河东区| 嘉祥县| 泰和县| 深水埗区| 都江堰市| 灵寿县| 陇南市| 田阳县| 仙游县| 水富县| 依安县| 桂东县| 岚皋县| 莫力| 五原县| 凌云县| 庆阳市| 东丰县| 五河县| 高安市| 华安县| 南康市| 那曲县| 大理市| 安西县| 涟源市| 辽宁省| 西盟| 三亚市| 阿克苏市| 孝感市| 富裕县| 墨脱县| 建平县| 澜沧| 安阳市| 鄯善县| 河南省| 房山区|