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

溫馨提示×

溫馨提示×

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

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

Java中怎么使用JVM實現內存管理

發布時間:2021-06-30 17:59:08 來源:億速云 閱讀:196 作者:Leah 欄目:編程語言

Java中怎么使用JVM實現內存管理,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

1. 查找失效對象

1.1 引用計數法

        可以為每一個對象添加一個引用計數器,用于存儲當前對象被幾處引用。

        引用計數法簡單高效,但無法解決循環引用問題,如A引用B,B又引用A,且這兩個對象不再被其它對象引用,那么在使用引用計數法的情況下,這兩個對象的引用數均為1,且無法減至0。

1.2 可達性分析算法

        可以通過一系列成為“GC Roots”的對象作為起始點,并從這些節點向下搜索,當一個對象到GC Roots不可達,則證明該對象不可用。

        Java中怎么使用JVM實現內存管理

                            圖1-1

        GC Roots對象包括下面幾種:      

        o 虛擬機棧中引用的對象。

        o 方法區中類靜態屬性引用的對象。

        o 方法區中常量引用的對象。 

        o 本地方法棧中引用的對象。   

        一個對象要真正被清理,至少需要兩次標記過程。

1.3 回收方法區

        方法區垃圾回收的效率與性價比都遠低于堆內存的回收。

        主要回收兩部分:廢棄常量和無用的類。

2. 垃圾收集算法

2.1 標記-清除算法

        Java中怎么使用JVM實現內存管理

                                            圖2-1

        標記清除算法的標記階段與清除階段效率都不高,且會產生大量內存碎片。

2.2 復制算法

        Java中怎么使用JVM實現內存管理

                                            圖2-2

        將內存平分為兩塊,每次只使用其中一塊。

        當一塊內存快用完時,可將存活的對象復制到另一塊上面,然后將剛才使用的內存一次性清理掉。

        該算法簡單高效,且不會產生內存碎片,但由于有一半空閑內存,所以內存使用率不高。

        HotSpot中,新生代內存結構為 1 * Eden + 2 * Survivor,每次只使用Eden區和其中一塊Survivor區,當發生回收時,會將Eden與在用的Survivor中的存活對象復制到另一塊Survivor區中。

        根據HotSpot的內存結構,可見只有10%的內存(其中一塊Survivor)被浪費,但此時有另一個問題,即實際情況下我們不能保證每次回收的存活對象都僅占內存的10%以下,所以當Survivor也不夠用時,就需要依賴其它內存(老年代)做分配擔保。

2.3 標記-整理算法

        在對象存活率高的情況下,復制算法需要進行較多的賦值操作,效率會變低,同時備用空間也是對內存的一種浪費。

        對于老年代,可能存在所有對象都存活的情況,所以直接使用復制算法是不合適的,所以出現了標記-整理算法。

        Java中怎么使用JVM實現內存管理

                                                  圖2-3

看完上述內容,你們掌握Java中怎么使用JVM實現內存管理的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

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

AI

麻阳| 澎湖县| 吉首市| 乐陵市| 双流县| 清丰县| 梅河口市| 阿拉善右旗| 武邑县| 福海县| 禹城市| 平山县| 三亚市| 龙海市| 浪卡子县| 武夷山市| 旺苍县| 含山县| 内乡县| 麦盖提县| 高邮市| 扶风县| 新河县| 苏州市| 芜湖县| 中阳县| 安徽省| 海城市| 鄂托克前旗| 奉贤区| 广宗县| 灵台县| 苍山县| 芷江| 五莲县| 娱乐| 曲靖市| 西城区| 宁德市| 宾川县| 涞水县|