国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 Java java教程 jvm垃圾回收演算法

jvm垃圾回收演算法

Aug 19, 2017 pm 01:52 PM
回收 垃圾 演算法

??? 我們都知道java語言與C語言最大的差別就是記憶體自動回收,那麼JVM是怎麼控制記憶體回收的,這篇文章將介紹JVM垃圾回收的幾種演算法,從而了解記憶體回收的基本原理。

stop the world

??? 在介紹垃圾回收演算法之前,我們需要先了解一個字「stop the world”,stop the world會在執(zhí)行某一個垃圾回收演算法的時候產(chǎn)生,JVM為了執(zhí)行垃圾回收,會暫時java應(yīng)用程式的執(zhí)行,等垃圾回收完成後,再繼續(xù)運作。如果你使用JMeter測試過java程序,你可能會發(fā)現(xiàn)在測試過程中,java程式有不規(guī)則的停頓現(xiàn)象,其實這就是“stop the world”,停頓的時候JVM是在做垃圾回收。所以盡可能減少stop the world的時間,就是我們優(yōu)化JVM的主要目標(biāo)。接下來我們來看看目前有哪些常見垃圾回收的演算法。

引用計數(shù)法

引用計數(shù)法顧名思義,就是對一個物件被引用的次數(shù)進行計數(shù),當(dāng)增加一個引用計數(shù)就加1,減少一個引用計數(shù)就減1。

jvm垃圾回收演算法

上圖表示3個Teacher的參考指向堆中的Teacher對象,那麼Teacher物件的參考計數(shù)就是3 ,以此類推Student物件的引用計數(shù)就是2。

jvm垃圾回收演算法

#上圖表示Teacher物件的參考減少為2, Student物件的引用減少為0(減少的原因是該引用指向了null,例如teacher3=null),按照引用計數(shù)演算法,Student物件的記憶體空間將被回收掉。

引用計數(shù)演算法原理非常簡單,是最原始的回收演算法,但是java中沒有使用這種演算法,原因有2。1是頻繁的計數(shù)影響效能,2是它無法處理循環(huán)引用的問題。

例如Teacher物件中引用了Student對象,Student物件中又引用了Teacher對象,這種情況下,物件將永遠無法被回收。

標(biāo)記清除

標(biāo)記清除演算法,它是許多垃圾回收演算法的基礎(chǔ),簡單來說有兩個步驟:標(biāo)記、清除。

標(biāo)記:遍歷所有的GC Roots,並將從GC Roots可達的物件設(shè)定為存活物件;

清除:遍歷堆中的所有對象,將沒有被標(biāo)記可達的對象清除;

jvm垃圾回收演算法

#注意上圖灰色的對象,因為從GC Root遍歷不到它們(儘管它們本身有引用關(guān)係,但從GC Root無法遍歷到它們),因此它們沒有被標(biāo)記為存活對象,在清除過程中將會被回收。

這裡需要注意的是標(biāo)記清除演算法執(zhí)行過程中,會產(chǎn)生“stop the world”,讓java程式暫停等待以保證在標(biāo)記清除的過程中,不會有新的對象產(chǎn)生。為什麼必須暫停java程式呢?舉個例子,如果在標(biāo)記過程完成後,又新產(chǎn)生了一個對象,而該對像已經(jīng)錯過了標(biāo)記期,那麼在接下來的清除流程中,這個新產(chǎn)生的對象因為未被標(biāo)記,所以將被視為不可達物件而被清除,這樣程式就會出錯,因此標(biāo)記清除演算法在執(zhí)行時,java程式將被暫停,產(chǎn)生「stop the world」。

接下來我們總結(jié)標(biāo)記清除演算法:

1、因為涉及大量的記憶體遍歷工作,所以執(zhí)行效能較低,這也會導(dǎo)致「stop the world」時間較長,java程式吞吐量降低;

#2、我們注意到物件被清除之後,被清除的物件留下記憶體的空缺位置,造成記憶體不連續(xù),空間浪費。

接下來我們來看其他演算法能不能改善這些問題?

標(biāo)記壓縮

標(biāo)記壓縮演算法你可能已經(jīng)想到了,它就是在標(biāo)記清除演算法的基礎(chǔ)上,增加了壓縮過程。

jvm垃圾回收演算法

在進行完標(biāo)記清除之後,對記憶體空間進行壓縮,節(jié)省記憶體空間,解決了標(biāo)記清除演算法內(nèi)存不連續(xù)的問題。

注意標(biāo)記壓縮演算法也會產(chǎn)生“stop the world”,不能和java程式並發(fā)執(zhí)行。在壓縮過程中一些物件記憶體位址會改變,java程式只能等待壓縮完成後才能繼續(xù)。

複製演算法

??? 複製演算法簡單來說就是將記憶體一分為二,但只使用其中一份,在垃圾回收時,將正在使用的那份記憶體中存活的物件複製到另一份空白的記憶體中,最後將正在使用的記憶體空間的物件清除,完成垃圾回收。

jvm垃圾回收演算法

jvm垃圾回收演算法

jvm垃圾回收演算法

jvm垃圾回收演算法

??? 複製演算法相對標(biāo)記壓縮演算法來說更簡潔高效,但它的缺點也顯而易見,它不適合用於存活物件多的情況,因為那樣需要複製的物件很多,複製效能較差,所以複製演算法往往用於記憶體空間中新生代的垃圾回收,因為新生代中存活對象較少,複製成本較低。它另一個缺點是記憶體空間佔用成本高,因為它基於兩份記憶體空間做物件複製,在非垃圾回收的週期內(nèi)只用到了一份記憶體空間,記憶體利用率較低。

小結(jié)

??? 以上我們介紹了常見的垃圾回收演算法,這些演算法各有各的優(yōu)缺點,但在JVM中並不是單純的使用特定的演算法,而是使用的一種叫做垃圾回收器的東西,垃圾回收器可以看做一系列演算法的不同組合,在不同的場景使用合適的垃圾回收器,才能起到事半功倍的效果。我們下一篇將介紹垃圾回收器。

?

參考資料:

#《實戰(zhàn)Java虛擬機》 葛一鳴

《深入理解Java虛擬機(第2版)》 週志明

################################## ##########

以上是jvm垃圾回收演算法的詳細內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

CLIP-BEVFormer:明確監(jiān)督BEVFormer結(jié)構(gòu),提升長尾偵測性能 CLIP-BEVFormer:明確監(jiān)督BEVFormer結(jié)構(gòu),提升長尾偵測性能 Mar 26, 2024 pm 12:41 PM

寫在前面&筆者的個人理解目前,在整個自動駕駛系統(tǒng)當(dāng)中,感知模組扮演了其中至關(guān)重要的角色,行駛在道路上的自動駕駛車輛只有通過感知模組獲得到準(zhǔn)確的感知結(jié)果後,才能讓自動駕駛系統(tǒng)中的下游規(guī)控模組做出及時、正確的判斷和行為決策。目前,具備自動駕駛功能的汽車中通常會配備包括環(huán)視相機感測器、光達感測器以及毫米波雷達感測器在內(nèi)的多種數(shù)據(jù)資訊感測器來收集不同模態(tài)的信息,用於實現(xiàn)準(zhǔn)確的感知任務(wù)。基於純視覺的BEV感知演算法因其較低的硬體成本和易於部署的特點,以及其輸出結(jié)果能便捷地應(yīng)用於各種下游任務(wù),因此受到工業(yè)

人工智慧可以預(yù)測犯罪嗎?探索CrimeGPT的能力 人工智慧可以預(yù)測犯罪嗎?探索CrimeGPT的能力 Mar 22, 2024 pm 10:10 PM

人工智慧(AI)與執(zhí)法領(lǐng)域的融合為犯罪預(yù)防和偵查開啟了新的可能性。人工智慧的預(yù)測能力被廣泛應(yīng)用於CrimeGPT(犯罪預(yù)測技術(shù))等系統(tǒng),用於預(yù)測犯罪活動。本文探討了人工智慧在犯罪預(yù)測領(lǐng)域的潛力、目前的應(yīng)用情況、所面臨的挑戰(zhàn)以及相關(guān)技術(shù)可能帶來的道德影響。人工智慧和犯罪預(yù)測:基礎(chǔ)知識CrimeGPT利用機器學(xué)習(xí)演算法來分析大量資料集,識別可以預(yù)測犯罪可能發(fā)生的地點和時間的模式。這些資料集包括歷史犯罪統(tǒng)計資料、人口統(tǒng)計資料、經(jīng)濟指標(biāo)、天氣模式等。透過識別人類分析師可能忽視的趨勢,人工智慧可以為執(zhí)法機構(gòu)

探究C++sort函數(shù)的底層原理與演算法選擇 探究C++sort函數(shù)的底層原理與演算法選擇 Apr 02, 2024 pm 05:36 PM

C++sort函數(shù)底層採用歸併排序,其複雜度為O(nlogn),並提供不同的排序演算法選擇,包括快速排序、堆排序和穩(wěn)定排序。

使用C++實現(xiàn)機器學(xué)習(xí)演算法:常見挑戰(zhàn)及解決方案 使用C++實現(xiàn)機器學(xué)習(xí)演算法:常見挑戰(zhàn)及解決方案 Jun 03, 2024 pm 01:25 PM

C++中機器學(xué)習(xí)演算法面臨的常見挑戰(zhàn)包括記憶體管理、多執(zhí)行緒、效能最佳化和可維護性。解決方案包括使用智慧指標(biāo)、現(xiàn)代線程庫、SIMD指令和第三方庫,並遵循程式碼風(fēng)格指南和使用自動化工具。實作案例展示如何利用Eigen函式庫實現(xiàn)線性迴歸演算法,有效地管理記憶體和使用高效能矩陣操作。

演算法在 58 畫像平臺建置中的應(yīng)用 演算法在 58 畫像平臺建置中的應(yīng)用 May 09, 2024 am 09:01 AM

一、58畫像平臺建置背景首先和大家分享下58畫像平臺的建造背景。 1.傳統(tǒng)的畫像平臺傳統(tǒng)的想法已經(jīng)不夠,建立用戶畫像平臺依賴數(shù)據(jù)倉儲建模能力,整合多業(yè)務(wù)線數(shù)據(jù),建構(gòu)準(zhǔn)確的用戶畫像;還需要數(shù)據(jù)挖掘,理解用戶行為、興趣和需求,提供演算法側(cè)的能力;最後,還需要具備數(shù)據(jù)平臺能力,有效率地儲存、查詢和共享用戶畫像數(shù)據(jù),提供畫像服務(wù)。業(yè)務(wù)自建畫像平臺和中臺類型畫像平臺主要區(qū)別在於,業(yè)務(wù)自建畫像平臺服務(wù)單條業(yè)務(wù)線,按需定制;中臺平臺服務(wù)多條業(yè)務(wù)線,建模複雜,提供更為通用的能力。 2.58中臺畫像建構(gòu)的背景58的使用者畫像

改進的檢測演算法:用於高解析度光學(xué)遙感影像目標(biāo)檢測 改進的檢測演算法:用於高解析度光學(xué)遙感影像目標(biāo)檢測 Jun 06, 2024 pm 12:33 PM

01前景概要目前,難以在檢測效率和檢測結(jié)果之間取得適當(dāng)?shù)钠胶狻N覀冄芯苛艘环N用於高解析度光學(xué)遙感影像中目標(biāo)偵測的增強YOLOv5演算法,利用多層特徵金字塔、多重偵測頭策略和混合注意力模組來提高光學(xué)遙感影像的目標(biāo)偵測網(wǎng)路的效果。根據(jù)SIMD資料集,新演算法的mAP比YOLOv5好2.2%,比YOLOX好8.48%,在偵測結(jié)果和速度之間達到了更好的平衡。 02背景&動機隨著遠感技術(shù)的快速發(fā)展,高解析度光學(xué)遠感影像已被用於描述地球表面的許多物體,包括飛機、汽車、建築物等。目標(biāo)檢測在遠感影像的解釋中

即時加SOTA一飛沖天! FastOcc:推理更快、部署友善Occ演算法來啦! 即時加SOTA一飛沖天! FastOcc:推理更快、部署友善Occ演算法來啦! Mar 14, 2024 pm 11:50 PM

寫在前面&筆者的個人理解在自動駕駛系統(tǒng)當(dāng)中,感知任務(wù)是整個自駕系統(tǒng)中至關(guān)重要的組成部分。感知任務(wù)的主要目標(biāo)是使自動駕駛車輛能夠理解和感知周圍的環(huán)境元素,如行駛在路上的車輛、路旁的行人、行駛過程中遇到的障礙物、路上的交通標(biāo)誌等,從而幫助下游模組做出正確合理的決策和行為。在一輛具備自動駕駛功能的車輛中,通常會配備不同類型的信息採集感測器,如環(huán)視相機感測器、雷射雷達感測器以及毫米波雷達感測器等等,從而確保自動駕駛車輛能夠準(zhǔn)確感知和理解周圍環(huán)境要素,使自動駕駛車輛在自主行駛的過程中能夠做出正確的決斷。目

基於全域的圖增強的新聞推薦演算法 基於全域的圖增強的新聞推薦演算法 Apr 08, 2024 pm 09:16 PM

作者|汪昊審校|重樓新聞App是人們?nèi)粘I钪蝎@取資訊來源的重要方式。在2010年左右,國外比較火的新聞App包括Zite和Flipboard等,而國內(nèi)比較火的新聞App主要是四大門戶。而隨著今日頭條為代表的新時代新聞推薦產(chǎn)品的火爆,新聞App進入了全新的時代。而科技公司,不管哪一家,只要掌握了高精尖的新聞推薦演算法技術(shù),就基本在技術(shù)層面掌握了主動權(quán)和話語權(quán)。今天,我們來看看RecSys2023的最佳長篇論文提名獎?wù)撐模璆oingBeyondLocal:GlobalGraph-EnhancedP

See all articles