999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Java垃圾回收器在不同設備環境下的性能分析

2021-07-29 14:04:06內蒙古呼倫貝爾職業技術學院于世萍
電子世界 2021年13期
關鍵詞:方法

內蒙古呼倫貝爾職業技術學院 于世萍

Java垃圾回收器是java語言的根基,隨著硬件設備和java語言的發展,多個版本的java虛擬機在不同條件的硬件設備下表現的性能有所差異,選擇最合適的垃圾回收器可以提高基于java開發的系統的性能。本文分析了幾款主流的垃圾回收器,并在學校主流的辦公設備為實驗環境測試,該方法可應用于OA系統開發時,配置合適時的垃圾回收器。

隨著java版本的更新,java的內存回收算法也逐漸更新迭代,如今已經提供了多種的垃圾回收器供開發人員選擇。面對不同性能的硬件設備和不同特征的場景,不同種類的垃圾回收器各有優劣之分。對于開發人員而言,如果不去分析其執行原理和算法特點,把自動內存管理當做黑匣子,只依賴最新版本的垃圾回收器,則不會帶來好的效果。

1 垃圾回收算法實現原理的分析

為實現在不同性能的設備上選擇最合適的垃圾回收器,本章將探究幾種垃圾回收器的工作原理和優缺點。

1.1 引用計數法

引用計數法為每個分配的內存空間保存一個引用計數器,統計有多少個內存對象引用了這個空間。當引用計數器的值為0時,表示該內存空間不再使用,即可回收。雖然該方法實現簡單,判定效率高,但是該方法無法解決循環引用的問題,由于這個致命缺陷,如今的垃圾回收器已經不再使用此類算法。

1.2 標記清除算法

當有效的內存空間即將耗盡,則會停止程序的執行,轉而進行標記和清除兩項工作:首先從引用的根開始遍歷,標記所有被引用過的對象,然后回收其余的沒有被引用的對象。該方法雖然可以有效的解決循環引用的問題,但是該方法的執行效率不高,且執行期間需要暫停整個應用程序的正常執行,導致用戶體驗不好,且由于回收的空間不連續,產生了內存碎片,需要維護一個空閑列表來解決內存不連續的問題。

1.3 復制算法

為解決標記清除算法會產生內存碎片的問題,提出了復制算法對標記清除算法作了以下改進:將內存空間分為兩塊,每次只使用一塊內存。在執行垃圾回收時,未被回收的內存復制到另一塊內存空間,并交換兩塊內存空間的角色。復制的時候內存空間會連續的排列好,由此可知,該方法解決了內存碎片的問題。不過,復制算法的有效性是建立在內存總空間較小,垃圾較多的情況下。如果需要垃圾回收的內存空間多,每次回收的垃圾少,則會占用大量的時間進行復制操作。

1.4 標記壓縮算法

該算法是在標記清除算法上的改進,該方法執行的第一步與標記清除算法一樣,標記所有被引用的對象,然后將存活的對象壓縮到一部分內存區域,連續的排列,最后將清理所有存活對象之外的空間。這種操作解決了內存碎片的問題,相較于空閑列表法,該方法的開銷顯然更小。

根據上述的研究可知,垃圾回收器的算法各有優劣,如果可以根據內存空間大小不同和垃圾與存活空間的比例不同,將內存空間合理分配,在每一部分內存空間使用不同的算法,即可達到取長補短的效果。為此,大部分的垃圾回收器會將內存劃分為新生代和老年代兩塊區域,其中新生代占用總內存空間的1/3,老年代占用2/3。首先新生成的垃圾被分配到新生代,新生代空間又分為一個eden區和兩個survivor區域。由于全部的內存初始分配都在新生代進行,所以新生代的垃圾產生的較多,回收的頻率較高,所以新生代使用復制算法;當新生代的內存空間已滿切無法進行垃圾回收時,這些存活對象會被移動到老年代中。老年代的空間大,且很少會執行垃圾回收。老年代占用總內存空間的2/3,使用標記壓縮算法,雖然該算法執行的時間較長,但是老年代只負責回收新生代區域無法回收的內存,且老年代的空間較大,很難全部耗盡。所以老年代執行垃圾回收的次數遠少于新生代,執行標記壓縮算法的次數也很少。

2 垃圾回收器工作原理的分析

如今的java語言已經更新了十四個大版本,其中也更新了多個種類的垃圾回收器,以滿足在硬件環境的性能逐漸進步的條件下,充分利用硬件設備的性能,以達到更快速的執行效率。目前主流的幾款垃圾回收期分別包括如下內容。

2.1 Serial+Serial Old回收器

Serial回收器是java語言第一代垃圾回收器,Serial回收器采用復制算法,應用與新生代;Serial Old回收器采用標記壓縮算法,應用于老年代。整體次采用串行回收的方式。Serial是單線程的回收器,這不僅說明該回收器只有一個線程執行垃圾回收,還表示執行垃圾回收時,必須暫停所有工作線程,暫停工作線程期間,會造成應用程序停頓。但是Serial垃圾回收器省去多個線程來回切換的開銷,對于限定單核cpu的環境來說,該方法仍然可以達到一定水平的工作效率。

2.2 ParNew回收器

ParNew回收器是在Serial回收器的基礎上擴展了并行回收的能力。在底層上,兩者共享了大部分的實現代碼,ParNew回收器同樣采用了復制算法和暫停用戶線程的機制,只是在垃圾回收執行時,由多個線程執行任務。在多核cpu的環境下,相較于Serial回收器,ParNew回收器執行垃圾回收的速度要更快一些,用戶線程被暫停的時間就會短一些。ParNew回收器負責回收新生代,可搭配Serial Old回收器或者CMS回收器負責老年代的垃圾回收工作。

2.3 CMS回收器

CMS垃圾回收器可以是實現并發工作,即垃圾回收線程在執行某一部分操作時可以與用戶線程同時執行。CMS負責老年代垃圾回收,基于標記清除算法實現。其工作流程可分為初始標記、并發標記、重新標記、并發清除四步驟。初始標記負責定位一些立即回收的內存空間,并發標記查找一些與初始標記過有關的且未被使用的內存。并發標記表示該步驟的垃圾回收線程與用戶線程可以同時執行。重新標記負責修正并發標記期間由于垃圾回收線程與用戶線程可以同時執行導致的錯誤標記。并發清除負責回收垃圾,該步驟的垃圾回收線程與用戶線程任然可以同時執行。該方法可以實現垃圾回收線程與工作線程在某些時段的同時工作,降低了由于垃圾回收造成工作線程停頓的時間。但是其缺點也很明顯:首先CMS采用標記清除算法,必然會造成大量內存碎片產生,無法合理的利用內存空間。其次,CMS在并發標記階段會對垃圾對象產生誤判,即該階段被判斷為不是垃圾的對象,用于工作線程也在執行的原因,這些對象有可能在標記結束后成為垃圾。總之CMS回收器在一次垃圾回收操作中無法準確的回收所有的垃圾,當垃圾增長過快時,該方法的性能明顯下降。

2.4 Parallel scavenge回收器

Parallel scavenge回收器同樣采用了復制算法,并行回收和暫停用戶線程機制。與parnew回收器區別在于該收集器以吞吐量優先,并且會根據當前程序的運行情況,動態的調整內存分配情況,以達到吞吐量和延遲的可控制可協調。

2.5 G1回收器

G1收集器采用了與以上完全不同的分區方法,在垃圾回收期間,允許有多個線程同時工作,且擁有與應用程序并發執行的能力,不會完全阻塞工作線程。G1回收器將內存空間劃分為多個區,每個區之間采用復制算法,整體采用標記壓縮算法。由于引入分區機制,G1可以自由控制垃圾回收線程的暫停時長,縮小回收范圍,優先回收價值最高的區,保證了在有限的時間內獲取最高的回收效率。

3 實驗與分析

為驗證在學校經常使用中等配置的硬件設備與工作中主要使用的教務管理系統的場景下,以上介紹的幾種垃圾回收器的優劣,本文設計的實驗如下:實驗運行兩個線程,第一個線程負責每秒打印一次時間,第二個線程通過循環生成字節數組占用內存,當達到一定的占用量后回收的操作,來模擬用戶使用教務管理系統。當第二個線程回收內存時,分別設置不同的垃圾回收器,來比較程序總共的運行時間,總運行時間=第一個線程的運行時間+垃圾回收占用的時間??倳r間越短,則表示垃圾回收執行的時間越短,垃圾回收期的效果越好。表1為該實驗的執行結果,由實驗結果可知,Parallel scavenge回收器的總時間最短,性能最優。

表1 實驗結果對比

總結:不同的垃圾回收器在不同的工作場景下各有優劣性,一些新推出的垃圾回收器適用于互聯網B/S業務,對處理高并發的業務請求有更好的效果,然而對于配置不高的單核cpu和簡單的教務管理系統,反而使用早期的垃圾回收器的效果更好。

猜你喜歡
方法
中醫特有的急救方法
中老年保健(2021年9期)2021-08-24 03:52:04
高中數學教學改革的方法
河北畫報(2021年2期)2021-05-25 02:07:46
化學反應多變幻 “虛擬”方法幫大忙
變快的方法
兒童繪本(2020年5期)2020-04-07 17:46:30
學習方法
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
最有效的簡單方法
山東青年(2016年1期)2016-02-28 14:25:23
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
賺錢方法
捕魚
主站蜘蛛池模板: 色偷偷男人的天堂亚洲av| 亚洲日韩精品无码专区97| 日本免费a视频| 偷拍久久网| 久久精品一品道久久精品| 亚洲V日韩V无码一区二区| 国产精品久久久久久影院| 精品久久久久成人码免费动漫| 国产成人禁片在线观看| 免费中文字幕在在线不卡| 久久综合色播五月男人的天堂| 美女无遮挡被啪啪到高潮免费| 日本一区二区不卡视频| 亚亚洲乱码一二三四区| 亚洲第一成网站| 亚洲中文精品久久久久久不卡| 凹凸精品免费精品视频| 欧美人与牲动交a欧美精品| 国产熟睡乱子伦视频网站| 亚洲丝袜第一页| 欧美日韩va| 国产精品分类视频分类一区| 国产精品开放后亚洲| 高潮毛片无遮挡高清视频播放| 国产91精品调教在线播放| 国产麻豆aⅴ精品无码| 国产精品第三页在线看| aa级毛片毛片免费观看久| 日韩天堂在线观看| 97久久超碰极品视觉盛宴| 久久亚洲中文字幕精品一区| 91探花在线观看国产最新| 国产微拍一区| 亚洲国产欧美国产综合久久| 国产白丝av| 综合久久久久久久综合网| 国产成人综合久久| 国产欧美日韩视频怡春院| 精品国产免费人成在线观看| 91毛片网| 伊人久久久久久久| 免费三A级毛片视频| 怡红院美国分院一区二区| 亚洲欧美成人影院| 中文字幕亚洲综久久2021| 日韩精品专区免费无码aⅴ| 色国产视频| 日韩在线2020专区| 亚洲乱伦视频| 亚洲第一中文字幕| 欧美一区二区福利视频| 久久99蜜桃精品久久久久小说| 在线观看欧美国产| 中国一级特黄视频| 四虎永久免费地址| 97超爽成人免费视频在线播放| a天堂视频| 色哟哟色院91精品网站| 久久久久九九精品影院 | 精品福利国产| 欧美日韩免费在线视频| 国产精品夜夜嗨视频免费视频| 国产区在线观看视频| 99成人在线观看| 熟妇丰满人妻av无码区| 日韩色图区| 永久免费AⅤ无码网站在线观看| 亚洲国产AV无码综合原创| 精品视频一区二区三区在线播| 一区二区三区在线不卡免费| 欧亚日韩Av| 青青草国产一区二区三区| 国产成人1024精品| 毛片最新网址| 国产一区二区三区精品久久呦| 高清久久精品亚洲日韩Av| 91口爆吞精国产对白第三集 | 日韩在线视频网站| 久久香蕉国产线| 成人免费一级片| 国产成人综合欧美精品久久| 国产精品区视频中文字幕|