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

溫馨提示×

溫馨提示×

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

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

Java垃圾回收之復制算法詳解

發布時間:2020-08-25 22:48:39 來源:腳本之家 閱讀:193 作者:Sam哥哥 欄目:編程語言

之前的Java垃圾回收之標記清除算法詳解 會導致內存碎片。下文的介紹的coping算法可以解決內存碎片問題。

概述

如果jvm使用了coping算法,一開始就會將可用內存分為兩塊,from域和to域, 每次只是使用from域,to域則空閑著。當from域內存不夠了,開始執行GC操作,這個時候,會把from域存活的對象拷貝到to域,然后直接把from域進行內存清理。

應用場景

coping算法一般是使用在新生代中,因為新生代中的對象一般都是朝生夕死的,存活對象的數量并不多,這樣使用coping算法進行拷貝時效率比較高。

jvm將Heap 內存劃分為新生代與老年代,又將新生代劃分為Eden(伊甸園) 與2塊Survivor Space(幸存者區) ,然后在Eden –>Survivor Space 以及From Survivor Space 與To Survivor Space 之間實行Copying 算法。

不過jvm在應用coping算法時,并不是把內存按照1:1來劃分的,這樣太浪費內存空間了。一般的jvm都是8:1。也即是說,Eden區:From區:To區域的比例是8:1:1

始終有90%的空間是可以用來創建對象的,而剩下的10%用來存放回收后存活的對象。

Java垃圾回收之復制算法詳解

1、當Eden區滿的時候,會觸發第一次young gc,把還活著的對象拷貝到Survivor From區;當Eden區再次觸發young gc的時候,會掃描Eden區和From區域,對兩個區域進行垃圾回收,經過這次回收后還存活的對象,則直接復制到To區域,并將Eden和From區域清空。

2、當后續Eden又發生young gc的時候,會對Eden和To區域進行垃圾回收,存活的對象復制到From區域,并將Eden和To區域清空。

3、可見部分對象會在From和To區域中復制來復制去,如此交換15次(由JVM參數MaxTenuringThreshold決定,這個參數默認是15),最終如果還是存活,就存入到老年代

注意:

  • 萬一存活對象數量比較多,那么To域的內存可能不夠存放,這個時候會借助老年代的空間。

優點

在存活對象不多的情況下,性能高,能解決內存碎片和Java垃圾回收之標記清除算法詳解 中導致的引用更新問題。

缺點

  • 會造成一部分的內存浪費。不過可以根據實際情況,將內存塊大小比例適當調整;
  • 如果存活對象的數量比較大,coping的性能會變得很差。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對億速云的支持。如果你想了解更多相關內容請查看下面相關鏈接

向AI問一下細節

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

AI

晋江市| 班玛县| 白朗县| 唐山市| 文成县| 虞城县| 二连浩特市| 甘德县| 金乡县| 襄垣县| 丁青县| 大连市| 马尔康县| 土默特右旗| 木里| 额济纳旗| 漳州市| 蓬溪县| 绥江县| 巴里| 土默特左旗| 玛沁县| 伊宁县| 双江| 武山县| 梨树县| 南开区| 平泉县| 永安市| 左权县| 伊宁市| 高密市| 天台县| 青海省| 东山县| 和田市| 景德镇市| 永和县| 松溪县| 旺苍县| 新竹市|