溫馨提示×

溫馨提示×

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

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

JVM的GC收集器概念是什么

發(fā)布時間:2021-10-23 15:59:52 來源:億速云 閱讀:108 作者:柒染 欄目:大數(shù)據(jù)

JVM的GC收集器概念是什么,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

java在運行時,生成的對象都在堆里存放著,有些對象的生命周期很短,只幾行代碼運行完就沒用了.沒用了之后不能放任他在堆里, 要進行回收,把空間空出來,給后面的對象.

我們常用收拾屋子來比喻jvm清理堆.這里, 我們不僅僅有個房子, 我們還可以想得再大膽一些,天降一女俠當老婆,是家里的一把手,掌管整個家. 不久,又天降一大胖小子, 小子性格獨立,也有自己的一塊小空間.然后小刀就要開始打掃衛(wèi)生,收拾房子了!

GC相關(guān)概念

STW(Stop the world)

于生活中, 就是我要開始打掃衛(wèi)生了, 大家先別動,讓我看看哪些東西是現(xiàn)在女俠和小子沒有在用的,又散落在外面占用空間, 當然我也不敢讓她們停太長時間, 所以趁他們停下來的時候,趕緊掃一眼,先把他們手上沒有用到的東西記下來, 然后趕緊讓她們繼續(xù)玩樂.

于JVM中,就是應(yīng)用先停下來,然后GC工作線程,趕緊掃描一遍,看看哪些對象是還有用,哪些是沒用的

安全點

這里其實是兩個概念, 一個是安全點, 一個是安全區(qū)域. 都是描述STW發(fā)生的時機, 要讓STW發(fā)生的時候,系統(tǒng)的對象引用關(guān)系不會改變.

在我要喊停女俠和小子的時候, 如果我一喊相當于按了定時器,把她們都定住了,然后我發(fā)現(xiàn)女俠還在倒水, 不太好, 只先解鎖女俠的鎖定, 讓她倒完水再停. 這是搶先式中斷現(xiàn)在生活中, 很少有這樣的.

更多的場景是, 她們的耳朵一直聽著我有沒有說話(輪詢狀態(tài)), 我一喊停. 然后她們趕緊把手里面的活停下來,或者去沙發(fā)坐著,或者去床上躺著等自己最近的安全點上主動停下.

安全區(qū)域: 如果我喊停的時候, 小子剛好在睡覺(線程在休眠,或者阻塞). 雖然沒有聽到我喊的停,但也是安全的.

GCRoots

有句話說是, 擒賊先擒王,要抓住事物的主要矛盾! 當家里的東西很亂的時候, 要問問女俠和小子是怎么回事, 過去一看, 好家伙, 原來女俠在教小子識物學(xué)字. 學(xué)一個字,找一個對應(yīng)的物品. 這時候, 本掃地的只要拿著那個小本子看一看, 就能順著找到哪些是要用的 ,哪些是已經(jīng)沒用的了.

在JVM中, 有一個根對象的概念, 就是堆里面的東西和他們有關(guān)系的就是要用的, 沒有關(guān)系的,就是可以回收的了.我們來這樣分類記憶

先是和類相關(guān)的:

  1. 類靜類屬性引用的對象

然后是和實例相關(guān)的:

  1. 虛擬棧中使用到的參數(shù),局部變量,臨時變量

  2. JNI中引用的對象

然后是JVM層面的:

  1. 常量引用的對象,如字符串常量池里的引用

  2. 所有被synchronized 持有的對象

  3. 虛擬機內(nèi)部的引用,如Class對象, 常駐內(nèi)存的異常對象,系統(tǒng)類加載器等等

RemberSet 記憶集

縱觀現(xiàn)在對大數(shù)據(jù)量的處理,大都是分而治之, 劃區(qū)而治. 那區(qū)與區(qū)之間不可能為了查A區(qū)的某條信息,把整個B區(qū)都查一遍.

如小刀我現(xiàn)在在上海工作, 女俠在成都.那么在上海就會有個記憶集,里面存著, 有成都某某區(qū)某某街(精確度有不同的實現(xiàn))到小刀的一條引用關(guān)系.

那哪一天上海要統(tǒng)計人員的時候, 來找到小刀了, 我說我在成都哪里哪里還有人, 那統(tǒng)計人員就到那個區(qū)域查一查, 看我有沒有說慌.  如確實有引用關(guān)系, 好,那小刀還有人關(guān)心著, 讓他繼續(xù)工作吧. 要是一查,發(fā)現(xiàn)沒有這個引用關(guān)系, 得了, 沒人要的小刀, 可以關(guān)進小黑屋嘍~!

看完上述內(nèi)容,你們掌握JVM的GC收集器概念是什么的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

jvm
AI