精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

vivo 校招:說一說 JVM 垃圾回收算法有哪些?分別用在哪些垃圾收

開發(fā) 前端
下面就分享一位校招同學(xué)在 vivo Java 后端崗位面試中就有問到 JVM 垃圾回收算法以及這些算法分別用在哪些垃圾收集器?

大家好,我是碼哥,可以叫我靚仔。

最近 vivo 校招薪資開獎了,想必互聯(lián)網(wǎng)公司給的不算多,有的同學(xué)達(dá)到 vivo offer 后直接拒了。

vivo 的面試難度如何?

下面就分享一位校招同學(xué)在 vivo Java 后端崗位面試中就有問到 JVM 垃圾回收算法以及這些算法分別用在哪些垃圾收集器?

圖片

vivo 一面

JVM 垃圾回收時自動管理內(nèi)存的一種機(jī)制,用于釋放不再使用的對象所占用的內(nèi)存空間。
一般是通過兩個步驟實(shí)現(xiàn):

  1. 標(biāo)記階段:識別可回收的垃圾對象。
  2. 清除階段:回收標(biāo)記為垃圾的對象所占的內(nèi)存。

下面我們先來看下垃圾的標(biāo)記是如何實(shí)現(xiàn)的。

垃圾標(biāo)記方式

通常,標(biāo)記垃圾有兩種方式:引用計(jì)數(shù)和可達(dá)性分析。

引用計(jì)數(shù)

通過維護(hù)每個對象的引用計(jì)數(shù)來判斷對象是否可以被回收。當(dāng)有一個指針引用它,那么引用計(jì)數(shù)+1,當(dāng)引用計(jì)數(shù)為 0 時,表示沒有被對象引用,可以被回收。

但是引用計(jì)數(shù)會存在一個問題,就是對象互相引用會導(dǎo)致-循環(huán)引用,形成一個環(huán)狀,這樣在這個循環(huán)引用的環(huán)內(nèi)所有對象的引用次數(shù)至少都為 1,那么這些對象永遠(yuǎn)無法被回收了。

可達(dá)性分析算法

Java 采用的也是這一種,可達(dá)性分析算法表示從 GC Roots 為起點(diǎn),開始查找存活對象,在查找過的路徑稱為引用鏈,所有能訪問到對象標(biāo)記為“可達(dá)”,無法訪問到的對象就是不可達(dá),也就是可以被回收的垃圾。

哪些可以作為 GC ROOTS 對象呢?

  1. 虛擬機(jī)棧的引用:方法中的局部變量。
  2. 方法區(qū)中的類靜態(tài)屬性、常量引用的對象。
  3. JNI(Java Native Interface)引用:本地方法持有的對象引用。
  4. 正在被線程引用的對象。

那么在找到垃圾后,如何進(jìn)行回收垃圾呢?

垃圾回收算法

標(biāo)記-清除算法

主要分為“標(biāo)記”和“清除”兩個階段,標(biāo)記存在引用的對象,回收未被標(biāo)記的對象空間。

存在問題:

  • 效率不高,因?yàn)樾枰獦?biāo)記的對象太多。
  • 存在大量不連續(xù)的空間碎片

復(fù)制算法

主要是將內(nèi)存分為大小相同的兩部分,每次只使用其中一個,當(dāng)其中一個的內(nèi)存使用完時,把存活的對象復(fù)制到另一邊去,然后把剩下的空間清理掉。

這樣可以提高一定效率,但缺點(diǎn)是內(nèi)存空間使用不高。

標(biāo)記-整理算法

標(biāo)記過程和“標(biāo)記-清除”算法一致,但在回收階段,它是讓所有存活的對象移動至一端,然后清理掉邊界以外的對象。

分代收集算法

分代收集算法主要是將 Java 堆分為年輕代和老年代兩個區(qū)域。

  • 年輕代:年輕代的絕大多數(shù)對象都是朝生夕亡的,每次回收只需要關(guān)注如何保存少量存活的對象,而不是標(biāo)記大量即將回收的對象。
  • 老年代:老年代的絕大多數(shù)對象是存活時間較長的對象。

垃圾收集器

垃圾收集器是 JVM 中對垃圾回收算法的具體實(shí)現(xiàn)。

Serial 收集器

Serial(串行)收集器是最基本的垃圾收集器了,它是一個單線程收集器,進(jìn)行垃圾回收時,只會用一個線程去完成垃圾回收工作,同時會讓其他所有的工作線程停止(Stop The World),等待它執(zhí)行完成。

Parallel Scavengel 收集器

Parallel Scavengel 收集器其實(shí)就是 Serial 的多線程版本,使用多線程進(jìn)行垃圾回收,而它的系統(tǒng)吞吐量自然也是比 Serial 的要高。

ParNew 收集器

ParNew 收集器和 Parallel Scavengel 收集器十分類似,通常會和 CMS 結(jié)合使用,新生代采用它完成垃圾回收。

CMS 收集器

CMS,Concurrent Mark Sweep,是一款追求以最短回收時間為目標(biāo)的垃圾收集器,注重提升用戶體驗(yàn),它是第一次實(shí)現(xiàn)了同時讓垃圾回收線程和用戶線程一起工作。

CMS 是基于“標(biāo)記-清除”算法實(shí)現(xiàn)的,它的運(yùn)作過程有以下幾個步驟:

  • 初始標(biāo)記:暫停所有的線程,記錄下 GC Roots 直接引用到的對象,這個過程耗時非常短。
  • 并發(fā)標(biāo)記:這個過程是和用戶線程并發(fā)運(yùn)行的,就是從 GC Roots 直接引用對象開始遍歷,雖然耗時較長,但也不影響用戶程序,但是會存在一個問題就是,因?yàn)橛脩艟€程是不暫停的(Stop The World),可能有些已經(jīng)標(biāo)記過的對象狀態(tài)會發(fā)生改變。
  • 重新標(biāo)記:這個過程就是為了修正上一階段因?yàn)橛脩艟€程導(dǎo)致的已經(jīng)標(biāo)記過對象的狀態(tài)發(fā)生改變的記錄,主要處理多標(biāo)、漏標(biāo)問題。這個過程會比初始標(biāo)記階段的耗時長,但也遠(yuǎn)低于并發(fā)標(biāo)記階段。
  • 并發(fā)清理:和用戶線程并發(fā)運(yùn)行,GC 線程對為標(biāo)記的區(qū)域清理。
  • 并發(fā)重置:重置本次 GC 的標(biāo)記數(shù)據(jù)。

從上面過程就可看出,CMS 的主要特點(diǎn)是:并發(fā)收集,延遲低。但也存在幾個缺點(diǎn):

  • 占用 CPU 資源
  • 無法處理浮動垃圾,即并發(fā)清理階段中產(chǎn)生新的垃圾,只能等到下一次 GC 再清理。
  • 因?yàn)樗褂玫氖恰皹?biāo)記-清除”算法,這個會產(chǎn)生大量內(nèi)存空間碎片。
  • 某些情況下,會導(dǎo)致 CMS 退化成 Serial Old 垃圾收集器,比如上一次老年代存在大量垃圾未收集完成,這時垃圾回收又被觸發(fā)。

CMS 有哪些常用的參數(shù)呢?

-XX:+UseConcMarkSweepGC,啟用 CMS 收集器,注意 JDK8 默認(rèn)使用的是 Parallel GC,JDK9 以后使用 G1 GC。

-XX:ConcGCThreads,CMS 并發(fā)過程運(yùn)行的線程數(shù)。

-XX:+UseCMSCompactAtFullCollection,F(xiàn)ullGC 完成后再做壓縮整理,針對 CMS 容易產(chǎn)生內(nèi)存碎片做的優(yōu)化。

-XX:CMSFullGCsBeforeCompaction,配合上面使用,多少次 FullGC 完成后進(jìn)行壓縮,,默認(rèn)是 0,即每次都會壓縮。

-XX:CMSInitiatingOccupancyFraction,老年代使用達(dá)到的某個比例時會觸發(fā) FullGC,默認(rèn)是 92。

-XX:+CMSParallellnitialMarkEnabled,表示在初始標(biāo)記階段采用多線程執(zhí)行,減少 STW 時間。

-XX:+CMSParallelRemarkEnabled,表示在重新標(biāo)記階段采用多線程執(zhí)行,減少 STW 時間。

G1 收集器

G1 是一面向服務(wù)器的垃圾收集器,主要針對多處理器和大內(nèi)存的機(jī)器,在極高概率滿足 GC 停頓時間要求的同時,具備高吞吐量特性。

G1 將 Java 堆劃分為多個大小相等的獨(dú)立區(qū)域(Region),JVM 最多可以有 2048 個 Region。一般 Region 大小等于堆大小除以 2048,比如堆大小為 4096M,則 Region 大小為 2M。

G1 保留了年輕代和老年代的概念,但不再是物理隔閡了,它們都是(可以不連續(xù))Region 的集合。默認(rèn)年輕代對堆內(nèi)存的占比是 5%,如果堆大小為 4096M,那么年輕代占據(jù) 200MB 左右的內(nèi)存,對應(yīng)大概是 100 個 Region。

G1 回收步驟:

  • 初始標(biāo)記:暫停所有的線程,記錄下 GC Roots 直接引用到的對象,這個過程耗時非常短。
  • 并發(fā)標(biāo)記:同 CMS。
  • 最終標(biāo)記:和 CMS 的重新標(biāo)記一樣。
  • 篩選回收:首先對各 Region 的回收價值和成本進(jìn)行計(jì)算,根據(jù)用戶設(shè)定的 GC 停頓時間(-XX:MaxGCPauseMillis 參數(shù))來制定回收計(jì)劃,比如此時又 1000 個 Region 需要回收,但是用戶設(shè)置的停頓時間是 200ms,那么通過之前回收成本計(jì)算,只會回收其中部分 Region 比如 600 個,所以時間是用戶可控的。回收算法主要用的復(fù)制算法,把一個 Region 存活的對象復(fù)制到另外一個 Region 中,所以不會像 CMS 那樣存在內(nèi)存碎片。
責(zé)任編輯:姜華 來源: 碼哥跳動
相關(guān)推薦

2017-08-04 10:53:30

回收算法JVM垃圾回收器

2022-01-20 10:34:49

JVM垃圾回收算法

2022-03-21 11:33:11

JVM垃圾回收器垃圾回收算法

2023-12-07 12:21:04

GCJVM垃圾

2023-12-29 10:28:24

SPIJava靈活性

2021-11-05 15:23:20

JVM回收算法

2009-12-25 16:15:31

JVM垃圾回收算法

2010-09-26 13:29:46

JVM垃圾回收

2024-12-03 09:01:33

2023-08-08 10:29:55

JVM優(yōu)化垃圾回收

2012-01-09 16:53:36

JavaJVM

2021-03-11 07:26:52

垃圾回收器單線程

2021-02-04 10:43:52

開發(fā)技能代碼

2022-06-10 07:13:29

JVM垃圾回收

2009-12-30 10:14:29

JVM垃圾回收

2010-09-25 15:33:19

JVM垃圾回收

2022-06-22 09:54:45

JVM垃圾回收Java

2021-06-27 21:10:12

Linux 進(jìn)程控制

2010-12-13 11:14:04

Java垃圾回收算法

2024-02-27 00:10:06

語言Javascript
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

97视频在线免费播放| 亚洲国产精品高清久久久| 亚洲巨乳在线观看| 国产精品无码久久久久成人app| 欧美理论电影大全| 欧美日韩国产首页| 性一交一乱一伧国产女士spa| 日韩av免费观影| 日韩成人午夜电影| 中文字幕亚洲天堂| 日本五十肥熟交尾| 成人av色网站| 亚洲国产一区二区在线播放| 96精品久久久久中文字幕| 午夜精品三级久久久有码| 精品国产a一区二区三区v免费| 91精品国产高清一区二区三区 | 欧美性受xxxx| 免费一级淫片aaa片毛片a级| 久草视频视频在线播放| 国产精品2024| 国产精品爽爽爽爽爽爽在线观看| 国产一区在线观看免费| 激情视频极品美女日韩| 777久久久精品| 久久人妻精品白浆国产| 欧美精品videosex| 最新不卡av在线| 日韩av高清| 亚洲色图21p| 国产一区二区三区蝌蚪| 国产精品免费在线免费| 欧美黄色免费在线观看| 93在线视频精品免费观看| 日韩成人小视频| 欧美日韩一区二区区| 国产欧美自拍| 91成人网在线| 黄色免费福利视频| 蜜臀av国内免费精品久久久夜夜| 日韩一区欧美小说| 亚洲 国产 欧美一区| 视频二区在线观看| 成人免费的视频| 北条麻妃高清一区| 国产chinasex对白videos麻豆| 日本免费在线视频不卡一不卡二| 欧美一区二区三区……| 国产精久久久久久| 一区在线播放| 午夜精品久久久久久久白皮肤 | 福利二区91精品bt7086| 全黄性性激高免费视频| 黄页网站在线| 亚洲国产精品久久久久婷婷884 | 91精品国产综合久久福利| av网站在线不卡| 三级在线观看视频| 精品久久久精品| 中国丰满人妻videoshd| 久久青青视频| 在线精品视频一区二区三四| 97在线免费公开视频| 日韩三级影视| 欧美日韩一区二区三区四区五区| 日韩av播放器| 超级碰碰久久| 欧美日韩国产三级| 91网址在线观看精品| 日本99精品| 亚洲国产欧美久久| 欧美狂猛xxxxx乱大交3| 色开心亚洲综合| 亚洲成人五区| 成人毛片老司机大片| 欧美成在线视频| 免费看污黄网站在线观看| 久久婷婷五月综合色丁香| 欧美日韩一区二区在线观看| 日韩在线观看网址| 男女污污视频网站| 亚洲欧美日本国产| 日韩午夜精品视频| 国产麻豆xxxvideo实拍| 久久99蜜桃| 在线国产精品视频| 五月天丁香激情| 国产农村妇女毛片精品久久莱园子| 国产91在线播放九色快色| 伊人网中文字幕| 国产精品欧美日韩一区| 精品伦理精品一区| 日本japanese极品少妇| 精品欧美激情在线观看| 久久国产天堂福利天堂| 老熟妻内射精品一区| 亚洲精品系列| 国产欧美一区二区三区在线| www.四虎在线观看| 久久精品欧美一区二区三区不卡| 中文字幕免费高| 午夜久久中文| 日韩成人影院| 欧美一二区视频| 人人干人人视频| 先锋影音网一区二区| 亚洲第一级黄色片| 波多野结衣网页| 久久成人av| 久久久国产精品视频| 精品无码免费视频| 日日摸夜夜添夜夜添精品视频| 国产精品网站视频| 午夜一区在线观看| 成人性视频网站| 正在播放久久| 亚洲欧美韩国| 精品国产乱码久久久久久老虎| аⅴ天堂中文在线网| 最新亚洲一区| 欧美性xxxx极品高清hd直播| 无码人妻丰满熟妇区毛片| 日韩精品一区二区三区中文字幕 | 欧美hdxxx| 欧美日韩国产一区二区三区地区| 成年人网站免费看| 亚洲天堂久久| 97影院在线午夜| 精品黄色免费中文电影在线播放| 在线精品视频小说1| 日韩av资源在线| 日韩成人高清视频| 欧美理论在线播放| 3344国产精品免费看| 国产乱子伦精品无码码专区| 亚洲午夜伦理| 国产精品www网站| 欧美少妇另类| 亚洲成人免费在线| 亚欧精品在线视频| 五月天久久网站| 成人久久久久爱| 亚洲爱爱综合网| 国产欧美1区2区3区| 无码人妻丰满熟妇区毛片18| 欧美人妖视频| 欧美一区二区成人| www国产亚洲精品久久网站| 色综合久久精品亚洲国产| 在线播放国产一区中文字幕剧情欧美| 美女av一区二区| 国产成人精品av| 精品国产电影| 日本一级黄视频| 成人区精品一区二区| 性欧美videosex高清少妇| 成人精品福利视频| 成人av.网址在线网站| 亚洲免费在线播放视频| 久久久极品av| 日本视频在线一区| 亚洲一区中文| 国内精品久久久久久久97牛牛| 日韩av综合| av在线最新| 亚洲夜夜综合| 久久精品免视看国产成人| 亚洲插插视频| 国产美女精品| 色综合天天综合网天天看片| 欧美做受高潮中文字幕| 国产一区二区三区亚洲| 欧美精品777| 免费一级片在线观看| www.亚洲免费av| 国产亚洲综合视频| 亚洲精品无吗| 国产欧美在线视频| 日本高清在线观看wwwww色| 亚洲人吸女人奶水| 亚洲精品第二页| 日产欧产美韩系列久久99| 亚洲视频电影| 韩国精品福利一区二区三区| 国产91在线播放| 污污的网站在线免费观看| 亚洲国产精品系列| 在线观看中文字幕av| 麻豆国产在线| 亚洲女爱视频在线| 久久精品久久99| 国产精品99一区二区三区| 亚洲a中文字幕| 在线日韩影院| 日韩中文字幕在线观看| 国产www视频| 欧美在线观看禁18| jizz国产免费| 中文字幕亚洲电影| 亚洲熟女乱综合一区二区三区| 免费一级欧美片在线观看| 日韩免费在线观看av| 亚洲伊人春色| 91免费高清视频| heyzo高清中文字幕在线| 日韩在线资源网| 丰满熟妇乱又伦| 欧美日韩性生活| www日韩精品| av高清不卡在线| 一个人看的视频www| 久久婷婷激情| 中国 免费 av| 日本欧美视频| 狠狠综合久久av| 视频一区日韩| 91在线观看免费观看| 在线看欧美视频| 欧美在线观看视频| 51精品在线| 欧美激情一级欧美精品| 黄网站在线播放| 看片的网站亚洲| 国产原创精品| 成人乱码手机视频| 国产精品777| 99thz桃花论族在线播放| 久久精品人人做人人爽| 成人在线观看黄色| 欧美精品自拍偷拍动漫精品| 国产乱国产乱老熟| 亚洲一区二区四区蜜桃| 久久久视频6r| 国产人久久人人人人爽| 国产偷人妻精品一区| 精品在线播放免费| 天天干天天操天天玩| 青青草91视频| 男人搞女人网站| 欧美a级一区| 视频一区二区在线| 一区二区美女| 农村老熟妇乱子伦视频| 国产精品va| 免费看啪啪网站| 国产精品高清无码| 香蕉av福利精品导航 | 日韩视频免费观看高清| 成人免费在线视频观看| 法国伦理少妇愉情| 成人h动漫精品一区二区| 国产一区二区在线免费播放| 亚洲美女视频在线免费观看| 国产av熟女一区二区三区| 亚洲欧美亚洲| 精品少妇在线视频| 亚洲免费网址| 欧妇女乱妇女乱视频| 亚洲一级一区| 国内自拍在线观看| 欧美激情 亚洲a∨综合| 日韩av中文字幕第一页| 一本久道综合久久精品| 欧美两根一起进3p做受视频| 激情综合网五月| 国产精品av免费| 国模大胆一区二区三区| 亚洲永久一区二区三区在线| 久久精品影视| 成人免费看片视频在线观看| 欧美国产免费| 成人黄色片视频| 中文字幕一区二区av| 成人短视频在线观看免费| 日本一区二区三区播放| 精品一区久久久| 人人精品视频| 亚洲一二三区在线| 牛牛国产精品| avav在线看| 日韩av中文| 欧美精品黑人性xxxx| 性一交一乱一伧老太| 日韩精品视频在线观看网址| 成人免费黄色网页| 久操成人在线视频| 天堂a中文在线| 久久精品99久久香蕉国产色戒| 日韩电影免费观看| 国产精品91一区| 97久久综合精品久久久综合| 欧美精品七区| 午夜日韩福利| 亚洲福利精品视频| av资源网一区| 免费国产羞羞网站美图| 欧美视频专区一二在线观看| 国产男男gay体育生白袜| 亚洲免费av片| 麻豆福利在线观看| 国产欧美精品在线| 女厕嘘嘘一区二区在线播放 | 国产一区在线观| 国产精品国产三级国产在线观看| 国产91xxx| 日本视频中文字幕一区二区三区 | 国产日韩欧美精品综合| 九九精品在线观看视频| 欧美特级限制片免费在线观看| 欧洲成人一区二区三区| 久久精品电影网站| 视频精品导航| 欧美日韩在线精品| 亚洲乱亚洲高清| 老女人性生活视频| 国产精品久久久久婷婷二区次| 黄网在线观看视频| 精品国产一区二区三区四区四| 毛片在线播放a| 国产精品久久久久久久久久久久久| 欧美日韩一区二区三区四区不卡| 大桥未久一区二区三区| 蜜臀精品一区二区三区在线观看| 蜜桃传媒一区二区亚洲av | 日本男女交配视频| 国产一区二区三区在线看麻豆| 日本人亚洲人jjzzjjz| 欧美视频裸体精品| 少妇高潮久久久| 韩国一区二区电影| 粉嫩av一区二区| 成年人网站国产| 成人一区二区三区在线观看| 成年人一级黄色片| 91精品久久久久久蜜臀| 欧洲美女少妇精品| 成人高h视频在线| 久久精品国产www456c0m| 在线免费观看视频黄| 国产目拍亚洲精品99久久精品| 伊人久久久久久久久久久久| 亚洲精品小视频在线观看| 亚洲欧洲高清| 欧洲一区二区日韩在线视频观看免费| 美女尤物久久精品| 37p粉嫩大胆色噜噜噜| 一本到不卡精品视频在线观看 | 国产精品传媒| 欧美大片在线播放| 久久影音资源网| 精品成人无码久久久久久| 国产一区二区精品丝袜| 国产第一亚洲| 法国空姐在线观看免费| 国产精品99久| 日韩成人一区二区三区| 亚洲成人中文字幕| 欧美调教sm| 五月天色一区| 国产精品一二三四区| 国产在线视频卡一卡二| 精品中文字幕久久久久久| 波多野结衣视频一区二区| 欧美午夜精品久久久久久蜜| 日韩成人午夜电影| 亚洲精品视频网址| 欧美一卡在线观看| xxxx另类黑人| 日韩欧美三级一区二区| 黄色小说综合网站| 日韩免费一二三区| 亚洲亚裔videos黑人hd| 日本成人一区二区| 久艹在线免费观看| 久久久99精品久久| 日本在线中文字幕一区二区三区| 亚洲字幕在线观看| 亚洲国产激情| 蜜臀久久99精品久久久久久| 欧美巨大另类极品videosbest | 欧美疯狂性受xxxxx另类| 老司机aⅴ在线精品导航| a√天堂在线观看| 日韩理论片在线| 日本人妻熟妇久久久久久| 国产精品观看在线亚洲人成网| 亚洲成人精选| 中国美女乱淫免费看视频| 8x8x8国产精品| 亚洲风情在线资源| 艳母动漫在线观看| 久久亚洲二区三区| 精品美女www爽爽爽视频| 欧美尤物巨大精品爽| 欧美+日本+国产+在线a∨观看| 波多野结衣有码| 91精品免费观看| 欧美va视频| 中文字幕无码精品亚洲35| 亚洲欧美在线高清|