日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

JVM優化:垃圾回收概述

來源: 責編: 時間:2023-08-09 23:02:49 436觀看
導讀一、什么是垃圾回收說起垃圾收集(Garbage Collection, 下文簡稱GC) , 有不少人把這項技術當作Java語言的伴生產物。 事實上, 垃圾收集的歷史遠遠比Java久遠, 在1960年誕生于麻省理工學院的Lisp是第一門開始使 用內存動態分

一、什么是垃圾回收

說起垃圾收集(Garbage Collection, 下文簡稱GC) , 有不少人把這項技術當作Java語言的伴生產物。 事實上, 垃圾收集的歷史遠遠比Java久遠, 在1960年誕生于麻省理工學院的Lisp是第一門開始使 用內存動態分配和垃圾收集 技術的語言。垃圾收集需要完成的三件事情: 哪些內存需要回收? 什么時候回收? 如何回收?83028資訊網——每日最新資訊28at.com

二、Java垃圾回收的優缺點

優點:83028資訊網——每日最新資訊28at.com

a.不需要考慮內存管理,83028資訊網——每日最新資訊28at.com

b.可以有效的防止內存泄漏,有效的利用可使用的內存,83028資訊網——每日最新資訊28at.com

c.由于有垃圾回收機制,Java中的對象不再有"作用域"的概念,只有對象的引用才有"作用域"83028資訊網——每日最新資訊28at.com

缺點:83028資訊網——每日最新資訊28at.com

java開發人員不了解自動內存管理, 內存管理就像一個黑匣子,過度依賴就會降低我們解決內存溢出/內存泄漏等問題 的能力。83028資訊網——每日最新資訊28at.com

三、判斷對象是否存活 - 引用計數算法

引用計數算法可以這樣實現:給每個創建的對象添加一個引用計數器,每當此對象被某個地方引用時,計數值+1, 引用失效時-1,所以當計數值為0時表示對象已經不能被使用。引用計數算法大多數情況下是個比較不錯的算法, 簡單直接,也有一些著名的應用案例但是對于Java虛擬機來說,并不是一個好的選擇,因為它很難解決對象直接相 互循環引用的問題。83028資訊網——每日最新資訊28at.com

優點: 實現簡單,執行效率高,很好的和程序交織。83028資訊網——每日最新資訊28at.com

缺點: 無法檢測出循環引用。83028資訊網——每日最新資訊28at.com

譬如有A和B兩個對象,他們都互相引用,除此之外都沒有任何對外的引用,那么理論上A和B都可以被作為垃 圾回收掉,但實際如果采用引用計數算法,則A、B的引用計數都是1,并不滿足被回收的條件,如果A和B之 間的引用一直存在,那么就永遠無法被回收了83028資訊網——每日最新資訊28at.com

四、判斷對象是否存活-可達性分析算法

在主流的商用程序語言如Java、C#等的主流實現中,都是通過可達性分析(Reachability Analysis)來判斷對象是否存 活的。此算法的基本思路就是通過一系列的“GC Roots”的對象作為起始點,從起始點開始向下搜索到對象的路徑。 搜索所經過的路徑稱為引用鏈(Reference Chain),當一個對象到任何GC Roots都沒有引用鏈時,則表明對象“不可 達”,即該對象是不可用的。83028資訊網——每日最新資訊28at.com

83028資訊網——每日最新資訊28at.com

在Java語言中,可作為GC Roots的對象包括下面幾種:83028資訊網——每日最新資訊28at.com

  • 棧幀中的局部變量表中的reference引用所引用的對象
  • 方法區中static靜態引用的對象
  • 方法區中final常量引用的對象
  • 本地方法棧中JNI(Native方法)引用的對象
  •  Java虛擬機內部的引用, 如基本數據類型對應的Class對象, 一些常駐的異常對象(比如 NullPointExcepiton、 OutOfMemoryError) 等, 還有系統類加載器。
  • 所有被同步鎖(synchronized關鍵字) 持有的對象。
  • 反映Java虛擬機內部情況的JMXBean、 JVMTI中注冊的回調、 本地代碼緩存等。

83028資訊網——每日最新資訊28at.com

五、JVM之判斷對象是否存活

finalize()方法最終判定對象是否存活:83028資訊網——每日最新資訊28at.com

即使在可達性分析算法中判定為不可達的對象, 也不是“非死不可”的, 這時候它們暫時還處于“緩 刑”階段, 要真 正宣告一個對象死亡, 至少要經歷兩次標記過程:83028資訊網——每日最新資訊28at.com

第一次標記:83028資訊網——每日最新資訊28at.com

如果對象在進行可達性分析后發現沒有與GC Roots相連接的引用鏈, 那它將會被第一次標記, 隨后進行一次篩 選, 篩選的條件是此對象是否有必要執行finalize()方法。83028資訊網——每日最新資訊28at.com

沒有必要:83028資訊網——每日最新資訊28at.com

假如對象沒有覆蓋finalize()方法, 或者finalize()方法已經被虛擬機調用過, 那么虛擬機將這兩種情況都視為“沒有必 要執行”。83028資訊網——每日最新資訊28at.com

有必要:83028資訊網——每日最新資訊28at.com

如果這個對象被判定為確有必要執行finalize()方法, 那么該對象將會被放置在一個名為F-Queue的 隊列之中, 并在 稍后由一條由虛擬機自動建立的、 低調度優先級的Finalizer線程去執行它們的finalize() 方法。 finalize()方法是對 象 逃脫死亡命運的最后一次機會, 稍后收集器將對F-Queue中的對象進行第二次小規模的標記, 如果對 象要在 finalize()中成功拯救自己——只要重新與引用鏈上的任何一個對象建立關聯即可, 譬如把自己 (this關鍵字) 賦值 給某個類變量或者對象的成員變量, 那在第二次標記時它將被移出“即將回收”的集 合; 如果對象這時候還沒有逃 脫, 那基本上它就真的要被回收了。83028資訊網——每日最新資訊28at.com

83028資訊網——每日最新資訊28at.com

六、再談引用

在JDK1.2以前,Java中引用的定義很傳統: 如果引用類型的數據中存儲的數值代表的是另一塊內存的起始地址,就 稱這塊內存代表著一個引用。這種定義有些狹隘,一個對象在這種定義下只有被引用或者沒有被引用兩種狀態。 我 們希望能描述這一類對象: 當內存空間還足夠時,則能保存在內存中;如果內存空間在進行垃圾回收后還是非常緊 張,則可以拋棄這些對象。很多系統中的緩存對象都符合這樣的場景。 在JDK1.2之后,Java對引用的概念做了擴 充,將引用分為 強引用(Strong Reference) 、 軟引用(Soft Reference) 、 弱引用(Weak Reference) 和 虛引 用(Phantom Reference) 四種,這四種引用的強度依次遞減。83028資訊網——每日最新資訊28at.com

1、強引用83028資訊網——每日最新資訊28at.com

強引用是使用最普遍的引用。如果一個對象具有強引用,那垃圾回收器絕不會回收它。當內存空間不足,Java虛擬 機寧愿拋出OutOfMemoryError錯誤,使程序異常終止,也不會靠隨意回收具有強引用的對象來解決內存不足的問 題。 ps:強引用其實也就是我們平時A a = new A()這個意思。83028資訊網——每日最新資訊28at.com

2、軟引用83028資訊網——每日最新資訊28at.com

如果一個對象只具有軟引用,則內存空間足夠,垃圾回收器就不會回收它;如果內存空間不足了,就會回收這些對 象的內存。只要垃圾回收器沒有回收它,該對象就可以被程序使用。 軟引用可以和一個引用隊列 (ReferenceQueue)聯合使用,如果軟引用所引用的對象被垃圾回收器回收,Java虛擬機就會把這個軟引用加入到 與之關聯的引用隊列中。83028資訊網——每日最新資訊28at.com

3、弱引用83028資訊網——每日最新資訊28at.com

用來描述那些非必須對象, 但是它的強度比軟引用更弱一些, 被弱引用關聯的對象只能生存到下一次垃圾收集發 生為止。 當垃圾收集器開始工作, 無論當前內存是否足夠, 都會回收掉只 被弱引用關聯的對象。 在JDK 1.2版之 后提供了WeakReference類來實現弱引用。 弱引用可以和一個引用隊列(ReferenceQueue)聯合使用,如果弱引用 所引用的對象被垃圾回收,Java虛擬機就會把這個弱引用加入到與之關聯的引用隊列中。83028資訊網——每日最新資訊28at.com

弱引用與軟引用的區別在于: ①更短暫的生命周期; ②一旦發現了只具有弱引用的對象,不管當前內存空間足夠與否,都會回收它的內存。83028資訊網——每日最新資訊28at.com

4、虛引用83028資訊網——每日最新資訊28at.com

“虛引用”顧名思義,它是最弱的一種引用關系。如果一個對象僅持有虛引用,在任何時候都可能被垃圾回收器回 收。虛引用主要用來跟蹤對象被垃圾回收器回收的活動。83028資訊網——每日最新資訊28at.com

虛引用與軟引用和弱引用的一個區別在于: ①虛引用必須和引用隊列 (ReferenceQueue)聯合使用。 ②當垃圾回收器準備回收一個對象時,如果發現它還有虛引用,就會在回收對象的內存之前,把這個虛引用加入到 與之 關聯的引用隊列中。83028資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-5148-0.htmlJVM優化:垃圾回收概述

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 如何高效使用Gherkin

下一篇: 實現分布式事務:Java與MySQL的XA事務協調

標簽:
  • 熱門焦點
  • 紅魔電競平板評測:大屏幕硬實力

    前言:三年的疫情因為要上網課的原因激活了平板市場,如今網課的時代已經過去,大家的生活都恢復到了正軌,這也就意味著,真正考驗平板電腦生存的環境來了。也就是面對著這種殘酷的
  • 7月安卓手機好評榜:三星S23Ultra好評率第一

    性能榜和性價比榜之后,我們來看最后的安卓手機好評榜,數據來源安兔兔評測,收集時間2023年7月1日至7月31日,僅限國內市場。第一名:三星Galaxy S23 Ultra好評率:95.71%在即將迎來新
  • 掘力計劃第 20 期:Flutter 混合開發的混亂之治

    在掘力計劃系列活動第20場,《Flutter 開發實戰詳解》作者,掘金優秀作者,Github GSY 系列目負責人戀貓的小郭分享了Flutter 混合開發的混亂之治。Flutter 基于自研的 Skia 引擎
  • 三言兩語說透設計模式的藝術-單例模式

    寫在前面單例模式是一種常用的軟件設計模式,它所創建的對象只有一個實例,且該實例易于被外界訪問。單例對象由于只有一個實例,所以它可以方便地被系統中的其他對象共享,從而減少
  • 在線圖片編輯器,支持PSD解析、AI摳圖等

    自從我上次分享一個人開發仿造稿定設計的圖片編輯器到現在,不知不覺已過去一年時間了,期間我經歷了裁員失業、面試找工作碰壁,寒冬下一直沒有很好地履行計劃.....這些就放在日
  • 破圈是B站頭上的緊箍咒

    來源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之每年的暑期檔都少不了瞄準追劇女孩們的古偶劇集,2021年有優酷的《山河令》,2022年有愛奇藝的《蒼蘭訣》,今年卻輪到小破站抓住了追
  • 小米MIX Fold 3下月亮相:今年唯一無短板的全能折疊屏

    這段時間以來,包括三星、一加、榮耀等等有不少品牌旗下的最新折疊屏旗艦都有新的進展,其中榮耀、三星都已陸續發布了最新的折疊屏旗艦,尤其號榮耀Magi
  • 超級標準版旗艦!iQOO 11S全球首發iQOO超算獨顯芯片

    上半年已接近尾聲,截至目前各大品牌旗下的頂級旗艦都已悉數亮相,而下半年即將推出的頂級旗艦已經成為了數碼圈爆料的主流,其中就包括全新的iQOO 11S系
  • 榮耀Magic4 至臻版 首創智慧隱私通話 強勁影音系統

    2022年第一季度臨近尾聲,在該季度內,許多品牌陸續發布自己的最新產品,讓大家從全新的角度來了解當今的手機技術。手機是電子設備中,更新迭代十分迅速的一款產品,基
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
中国女人久久久| 激情欧美日韩| 欧美区一区二| 国产精品www994| 国产日韩在线视频| ●精品国产综合乱码久久久久| 亚洲激情成人网| 亚洲视频电影在线| 久久国产婷婷国产香蕉| 女人天堂亚洲aⅴ在线观看| 欧美日韩亚洲91| 国产乱码精品一区二区三| 狠狠爱综合网| 亚洲免费电影在线| 亚洲午夜国产成人av电影男同| 欧美一区二区三区另类| 欧美国产日韩二区| 国产精品区二区三区日本| 激情综合网激情| 亚洲最新色图| 久久精品一区中文字幕| 欧美另类综合| 黑人极品videos精品欧美裸| 一本久道久久综合狠狠爱| 久久er精品视频| 欧美人牲a欧美精品| 国产亚洲一级| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 亚洲国产一区二区三区在线播 | 亚洲人体1000| 午夜精品成人在线视频| 欧美sm视频| 国产日韩精品视频一区| 一本色道久久| 玖玖在线精品| 国产日韩av一区二区| 99riav国产精品| 久久字幕精品一区| 国产欧美精品xxxx另类| 99re66热这里只有精品4| 另类人畜视频在线| 国产日韩欧美一区| 在线午夜精品自拍| 欧美电影资源| 激情久久综合| 欧美一区二区三区四区视频| 欧美深夜影院| 亚洲美女一区| 免费亚洲视频| 精品91在线| 欧美在线999| 国产精品欧美日韩一区二区| 亚洲美女电影在线| 欧美暴力喷水在线| 一区二区三区在线观看视频| 新片速递亚洲合集欧美合集| 欧美性猛交xxxx乱大交退制版| 亚洲激情六月丁香| 久久夜色精品国产亚洲aⅴ| 国产日韩欧美制服另类| 亚洲欧美视频一区| 国产精品va在线| 在线视频亚洲一区| 欧美日韩国产综合网| 亚洲清纯自拍| 女主播福利一区| 在线精品在线| 久久在线免费视频| 好吊成人免视频| 久久精品国产77777蜜臀| 国产日韩欧美精品一区| 欧美一级视频精品观看| 国产欧美日韩精品丝袜高跟鞋| 亚洲一区免费看| 国产精品成人免费视频| 亚洲素人在线| 国产精品久久精品日日| 亚洲综合精品四区| 国产精品免费一区二区三区观看| 亚洲图片欧美午夜| 国产精品久久二区二区| 亚洲一区二区三区精品在线| 国产精品国色综合久久| 亚洲一区视频| 国产精品一级在线| 欧美一区二区私人影院日本| 国产欧美日韩另类视频免费观看| 亚洲综合国产激情另类一区| 国产精品日韩电影| 欧美一乱一性一交一视频| 国产一区二区三区电影在线观看| 久久国产精品99精品国产| 极品少妇一区二区三区精品视频| 亚洲激情电影在线| 欧美黄色免费网站| 99精品欧美一区二区蜜桃免费| 欧美日韩国产页| 亚洲天堂av图片| 国产精品日韩电影| 国产一区二区成人| 久久精品99久久香蕉国产色戒| 好吊妞这里只有精品| 久久综合狠狠| 亚洲激情社区| 欧美日本不卡| 午夜日韩电影| 伊人蜜桃色噜噜激情综合| 欧美成人69| 亚洲视频1区| 国产丝袜美腿一区二区三区| 久久亚洲精品视频| 一本久久a久久精品亚洲| 国产精品视频免费观看| 久久精品一区中文字幕| 亚洲国产精品一区二区www在线| 欧美日韩国产影院| 欧美一激情一区二区三区| 国内精品久久久久伊人av| 你懂的亚洲视频| 亚洲一区3d动漫同人无遮挡| 国产在线拍揄自揄视频不卡99 | 国产欧美精品日韩区二区麻豆天美| 久久久久成人精品免费播放动漫| 最近中文字幕mv在线一区二区三区四区| 欧美日韩成人一区二区三区| 性欧美video另类hd性玩具| 亚洲成人在线免费| 欧美性猛交一区二区三区精品| 亚洲欧美在线看| 亚洲二区视频在线| 国产精品久久久久久影院8一贰佰| 久久精品国产久精国产思思| 亚洲精品日韩在线| 国产欧美一区在线| 欧美国产一区视频在线观看 | 欧美日韩免费区域视频在线观看| 西瓜成人精品人成网站| 最新日韩中文字幕| 国产精品色午夜在线观看| 免费短视频成人日韩| 亚洲欧美国产另类| 亚洲国产片色| 国产私拍一区| 欧美日韩视频不卡| 久久免费视频观看| 亚洲无毛电影| 亚洲国产毛片完整版 | 亚洲精品美女在线观看| 国产小视频国产精品| 欧美人与禽猛交乱配| 久久久久国产精品麻豆ai换脸| 99视频在线观看一区三区| 黄色亚洲大片免费在线观看| 国产精品wwwwww| 欧美黄色一区| 老司机67194精品线观看| 亚洲欧美国产高清| 亚洲精品一区二区三| 精品二区视频| 国产人久久人人人人爽| 欧美日韩在线视频一区二区| 你懂的视频一区二区| 久久久亚洲国产天美传媒修理工| 亚洲一区视频在线观看视频| 亚洲精品精选| 亚洲电影免费| 国产一区二区三区黄| 国产精品毛片大码女人| 欧美日韩在线观看视频| 免费一级欧美片在线观看| 欧美综合第一页| 亚洲欧美日韩国产精品| 在线亚洲激情| 日韩网站在线看片你懂的| 亚洲激情一区二区三区| 狠狠综合久久| 国产一区白浆| 国产亚洲精品久久久久动| 国产精品一区二区三区免费观看| 欧美丝袜第一区| 欧美日韩理论| 欧美欧美全黄| 欧美精品一区二区三区四区| 免费久久99精品国产| 久久人人爽国产| 久久在线免费观看| 久久久xxx| 久久久久高清| 久久久噜噜噜久久久| 久久精品国产清高在天天线 | 国产精品久久999| 国产精品xxx在线观看www| 欧美色精品在线视频| 欧美日韩免费高清| 欧美日韩一区在线观看| 欧美日韩一区在线观看| 欧美视频一区二区三区在线观看| 欧美三日本三级三级在线播放| 欧美区在线播放| 欧美日韩午夜在线视频| 欧美日韩中文在线观看| 欧美色视频日本高清在线观看| 国产精品草草| 国产精品三级视频|