中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

java堆的內存模型介紹

發布時間:2021-08-25 18:49:48 來源:億速云 閱讀:149 作者:chen 欄目:編程語言

本篇內容介紹了“java堆的內存模型介紹”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

java堆的內存模型

  根據對象存活的特點以及使垃圾回收產生算法產生最大的收益,將堆區分為兩大塊,一個是Old區,一個是Young區。Young區分為兩大塊,一個是Survivor區(S0+S1),一塊是Eden區。S0和S1一樣大,也可以叫From和To。

對象創建所在區域

  一般情況下,新創建的對象都會被分配到Eden區,一些特殊的大的對象會直接分配到Old區。

  比如有對象A,B,C等創建在Eden區,但是Eden區的內存空間肯定有限,比如有100M,假如已經使用了

  100M或者達到一個設定的臨界值,這時候就需要對Eden內存空間進行清理,即垃圾收集(GarbageCollect),

  這樣的GC我們稱之為MinorGC,MinorGC指得是Young區的GC。經過GC之后,有些對象就會被清理掉,有些對象可能還存活著,對于存活著的對象需要將其復制到Survivor區,然后再清空Eden區中的這些對象。

為什么要分為surivor0和surivor1

  下面根據垃圾收集算法

  詳細講解下為什么要分為surivor0和surivor1,難道一個survivor區不行嗎?

  假設只有一個s0區,eden區回收之后,一部分對象存放到了s0區,此時eden區空間全部釋放,內存都是連續的。但是因為s0區也會進行垃圾回收,它有一部分存活的對象進入到了Old區,還有一部分對象存活留下來,這時候s0區就產生了內存碎片,為了使s0區的內存空間相對連續,再分配一個s1區,大小和s0一樣,每次垃圾回收的時候,將eden區和s0區存活的對象移動到s1區,這樣永遠都能保證s0或者s1的內存空間是連續的。當然,這樣的情況下會使得s0或者s1區有一個空間永遠為空,浪費10%的內存空間,當然為了最大化的利用young區,這樣的浪費是被接受的。所以,young區一次GC流程是這樣的:在同一個時間點上,S0和S1只能有一個區有數據,另外一個是空的。假設s0區有數據,此時進行一次GC操作,s0區中對象的年齡就會+1,而Eden區中所有存活的對象會被復制到是s1區,s0區中還能存活的對象會有兩個去處。若對象年齡達到之前設置好的年齡閾值,此時對象會被移動到Old區,Eden區和s0區沒有達到閾值的對象會被復制到s1區,s0區將又會變為空的。

“java堆的內存模型介紹”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

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

AI

色达县| 扶绥县| 三亚市| 应用必备| 桃园市| 娱乐| 丹寨县| 九江市| 彭水| 江陵县| 玉龙| 琼海市| 永善县| 松江区| 革吉县| 子洲县| 巴彦淖尔市| 大理市| 阿拉尔市| 内丘县| 泰州市| 郎溪县| 江永县| 孝感市| 会昌县| 太仓市| 牙克石市| 东乌珠穆沁旗| 滨州市| 阜平县| 伊宁市| 揭阳市| 大港区| 清新县| 定襄县| 苍梧县| 江华| 祁东县| 鸡泽县| 阳朔县| 西吉县|