bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

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

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

成都創新互聯公司是一家專業提供金灣企業網站建設,專注與成都做網站、成都網站建設、H5網站設計、小程序制作等業務。10年已為金灣眾多企業、政府機構等服務。創新互聯專業網站設計公司優惠進行中。

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實現內存管理的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注創新互聯行業資訊頻道,感謝各位的閱讀!

網站欄目:Java中怎么使用JVM實現內存管理
文章鏈接:http://vcdvsql.cn/article12/gghgdc.html

成都網站建設公司_創新互聯,為您提供網頁設計公司域名注冊ChatGPT手機網站建設用戶體驗網站收錄

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

網站建設網站維護公司