精品欧美一区二区三区在线观看 _久久久久国色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ù)棧公眾號

一级国产黄色片| 国产成人91久久精品| aaaaaaaa毛片| 成人无遮挡免费网站视频在线观看| 91久久亚洲| 亚洲第一福利网| 精品网站在线看| 在线精品免费视| 国产成人三级| 欧美久久久影院| 女人被男人躁得好爽免费视频| 亚洲av无码乱码国产精品| 精品9999| 精品欧美一区二区在线观看| 成熟丰满熟妇高潮xxxxx视频| 免费国产在线视频| 免费成人在线视频观看| 久久99久久99精品免观看粉嫩 | 在线观看日本www| 成人黄色网址| 丁香天五香天堂综合| 欧美性受xxxx黑人猛交| 香蕉视频久久久| www一区二区三区| 亚洲一区二区在线观看视频| 欧美日韩一区二区三| ,一级淫片a看免费| 国产精品jizz在线观看美国| 亚洲成人av片| 久久久久久久久久福利| 超碰在线最新| 99精品国产视频| 成人午夜高潮视频| www青青草原| 国产精品一线天粉嫩av| 日韩你懂的电影在线观看| 日韩毛片在线免费看| 宅男网站在线免费观看| 国产欧美一区二区精品性| 北条麻妃高清一区| 中文在线观看免费高清| 激情亚洲成人| 国产一区二区三区三区在线观看| 国产精品一区二区在线免费观看| 成人在线高清| 亚洲一级电影视频| 国产又大又长又粗又黄| 亚洲av综合色区无码一区爱av | 精品日本一区二区| 国产免费无遮挡| 日本不卡免费在线视频| 98精品国产自产在线观看 | 97国产精品久久久| 久久综合伊人| 韩国三级电影久久久久久| av男人的天堂av| 成人性生交大片免费看96| 制服丝袜av成人在线看| 欧美三级理论片| 欧美亚洲日本精品| 黄色成人在线播放| heyzo亚洲| 大菠萝精品导航| 亚洲福利电影网| 99亚洲国产精品| 国产一二三区在线观看| 国产片一区二区三区| 久久一区二区三区av| 天堂国产一区二区三区| 成人午夜激情视频| 国产精品美女诱惑| 亚洲老妇色熟女老太| 国产盗摄精品一区二区三区在线| 91久久久国产精品| 99国产精品久久久久99打野战| 日韩电影在线一区二区三区| 国产成人精品免费视频| 成人公开免费视频| 日韩影院精彩在线| 欧美一区三区三区高中清蜜桃| 日本高清www免费视频| 亚洲综合99| 欧美一级在线亚洲天堂| 国产成人无码av| 亚洲在线观看| 久久久久亚洲精品成人网小说| 国产精品16p| 国产精品资源| 欧美极品少妇xxxxⅹ喷水| 日韩av一区二区在线播放| 亚洲美洲欧洲综合国产一区| 久久精品国产精品亚洲| 欧美黄色一区二区三区| 亚洲激情精品| 午夜精品理论片| 精品国产一区二区三区四| 日韩成人午夜电影| 国产日本欧美一区二区三区在线 | 福利一区福利二区| 国产情人节一区| 色婷婷av一区二区三区之红樱桃 | 蜜桃视频在线观看免费视频网站www| 成人欧美一区二区三区黑人麻豆| 国产自产在线视频| 成人不卡视频| 亚洲精品av在线| 免费看一级黄色| 一本色道久久综合亚洲精品不| 国产精品一二区| 婷婷开心激情网| 中文字幕一区视频| 久草精品在线播放| 日日夜夜亚洲精品| 亚洲精品电影在线观看| 色婷婷国产精品免| 亚洲国产一区二区精品专区| 国产区精品视频| 免费播放片a高清在线观看| 亚洲人精品午夜| 男人揉女人奶房视频60分| 精品一区二区三区免费看| 日韩精品一区二区三区四区| 亚洲国产av一区| 亚洲视频狠狠| 成人亚洲激情网| av在线女优影院| 亚洲精品成a人| 中日韩av在线播放| 九九免费精品视频在线观看| 高清在线视频日韩欧美| av高清一区二区| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 欧美精品久久99| 丰腴饱满的极品熟妇| 在线欧美福利| av免费精品一区二区三区| 黄色一级片在线观看| 欧美性感一类影片在线播放| 国产 中文 字幕 日韩 在线| 亚洲经典三级| 成人欧美一区二区三区黑人免费| 免费av在线播放| 欧美精选在线播放| 国产又粗又长又黄的视频| 久久精品麻豆| 久久久久久久久久久一区| 国产在线观看www| 日韩av在线网| 久久久久久久久久免费视频 | 午夜久久福利影院| 国产麻豆剧传媒精品国产av| 亚洲无毛电影| 国产日韩三区| 欧美xxxhd| 日韩精品久久久久久福利| www日韩精品| 久久先锋影音av鲁色资源| 日韩欧美精品在线观看视频| 国产一区2区| 国产精品视频久| 免费大片黄在线| 欧美一区二区播放| 久草视频在线资源站| 成人一道本在线| 国产91xxx| 国产精品羞羞答答在线观看| 国产精品久久久久久久电影| 免费人成在线观看播放视频| 欧美无砖专区一中文字| 婷婷激情四射网| 国产成人综合网| 中文字幕日本最新乱码视频| 成人高潮a毛片免费观看网站| 97视频com| 黄色电影免费在线看| 欧美日韩视频在线观看一区二区三区| 91麻豆精品久久毛片一级| 国产在线不卡视频| 免费看黄在线看| 国产一区二区精品福利地址| 国产精品一二区| 婷婷在线播放| 亚洲成在人线av| 国产91av在线播放| 久久网站热最新地址| 深夜黄色小视频| 欧美日本不卡| 久久精品五月婷婷| 久久久免费视频网站| 国产传媒在线观看| 亚洲精品国产精品国产自| 极品国产91在线网站| 国产精品欧美经典| 少妇熟女视频一区二区三区| 欧美日韩亚洲一区| 日韩亚洲视频在线| aaa国产精品视频| 国产精品成人av在线| 麻豆影视在线观看_| 91精品国产入口| 中国一级免费毛片| 亚洲人成亚洲人成在线观看图片 | 不卡一卡二卡三乱码免费网站 | 久久综合综合久久综合| 分分操这里只有精品| 大色综合视频网站在线播放| 国产精品亚洲一区| 亚洲香蕉久久| 人体精品一二三区| 国产丝袜视频在线播放| 国产亚洲一级高清| 午夜av免费观看| 91精品综合久久久久久| 无码人妻精品一区二区蜜桃色欲| 一区二区三区四区在线免费观看| 久久亚洲无码视频| av电影在线观看一区| 欧美污在线观看| 国产精品久久久久久模特| 亚洲高潮无码久久| 欧美色女视频| 免费在线国产精品| 国产精品videossex| 国产啪精品视频| 欧美福利在线播放| 日本久久久a级免费| 波多一区二区| 国产亚洲精品综合一区91| 姝姝窝人体www聚色窝| 欧美日韩精品免费| 亚洲 欧美 日韩 在线| 婷婷成人激情在线网| 中文字幕影音先锋| 亚洲男人的天堂av| 黄色精品视频在线观看| 久久久久久久久伊人| 香蕉久久久久久av成人| 蜜臀久久99精品久久久画质超高清| 久久精品免费一区二区| 99成人精品| 欧美一区二区激情| 伊人成年综合电影网| 大陆av在线播放| 国内久久精品| 妺妺窝人体色www看人体| 希岛爱理一区二区三区| 一区二区不卡在线观看| 首页国产精品| 图片区小说区区亚洲五月| 国产影视一区| 手机在线观看国产精品| 99久热这里只有精品视频免费观看| 亚洲iv一区二区三区| 成人国产精品久久| 999视频在线免费观看| 91精品国产自产在线丝袜啪| 国产精品一香蕉国产线看观看| 色综合久久久| 91免费版网站入口| 久久伦理中文字幕| 国产成人女人毛片视频在线| 精品国内亚洲2022精品成人| 国模一区二区三区私拍视频| y111111国产精品久久久| 激情五月综合色婷婷一区二区 | 日本一区二区三区视频在线观看| 亚洲精品一区国产| 精品国产乱码久久久久软件 | 亚洲成人亚洲激情| 欧美日韩伦理片| 国产视频精品一区二区三区| 香蕉国产在线视频| 亚洲午夜激情免费视频| 阿v免费在线观看| 中文字幕久久久av一区| 韩国中文免费在线视频| 久久精品久久久久| 92久久精品| 国产成人精品免费久久久久| 午夜精品久久久久久久第一页按摩 | 欧美性猛交xxxx乱大交退制版 | 精品区一区二区| 国产精品呻吟久久| 欧美精品一区视频| 超碰免费在线| 欧美激情欧美激情在线五月| 伊人久久国产| 国产噜噜噜噜噜久久久久久久久| 高清不卡一区| 国产麻豆乱码精品一区二区三区 | 毛片a片免费观看| 欧美日韩性视频在线| 亚洲视频在线观看一区二区| 这里只有精品免费| 亚欧洲精品视频| www.久久色.com| 欧美videos另类精品| 国产精品狠色婷| 日韩影片在线观看| 日本一区二区高清视频| 欧美成人高清| 久久久久久久久久久视频| 视频一区欧美精品| 国产又粗又长又大的视频| 国产精品一区二区久久不卡| 成年人网站免费在线观看 | 日韩av中文字幕在线播放| 91在线免费看| 91成人天堂久久成人| 国产精区一区二区| 日韩亚洲视频在线| 国产一区二区三区久久久久久久久| www.久久av.com| 久久女同互慰一区二区三区| 九九热国产精品视频| 欧美性三三影院| 韩国中文字幕hd久久精品| 日韩的一区二区| www久久日com| 国产成人精品av| 青青草原在线亚洲| 国产美女永久无遮挡| 欧美a一区二区| 深田咏美中文字幕| 国产精品的网站| 中文字幕乱伦视频| 亚洲精品一区在线观看| 尤物网址在线观看| 国产成人一区三区| 台湾佬综合网| 妞干网在线视频观看| 国产盗摄女厕一区二区三区 | 久久在线免费| 国产天堂在线播放| 久久久久久久免费视频了| 国产午夜视频在线| 欧美大片在线观看| av网站在线看| 亚洲自拍高清视频网站| 欧美aaaa视频| 亚洲综合婷婷久久| 国产精品入口麻豆九色| 综合激情网五月| 日韩精品高清视频| 这里有精品可以观看| 久久伦理网站| 国产日韩欧美高清免费| 女同性恋一区二区三区| 亚洲影视在线播放| 蜜桃av鲁一鲁一鲁一鲁俄罗斯的 | 日本vs亚洲vs韩国一区三区 | 91成人福利| 欧美大黑帍在线播放| 成人午夜在线播放| 男人的天堂一区| 日韩精品在线观看一区| 在线精品亚洲欧美日韩国产| 美女主播视频一区| 精品91在线| 亚洲第一黄色网址| 午夜精品成人在线| 三级av在线播放| 国产精品96久久久久久又黄又硬| 国产精品片aa在线观看| a在线观看免费视频| 亚洲欧洲综合另类| www.久久综合| 另类专区欧美制服同性| 中文字幕久久精品一区二区| 少妇高潮喷水在线观看| xnxx国产精品| 亚洲天堂手机在线| 九九热精品视频在线播放| youjizz欧美| 激情网站五月天| 中文字幕五月欧美| 国内爆初菊对白视频| 国产成人精品久久久| 99久久精品网站| 成人做爰www看视频软件| 欧美色视频日本高清在线观看| 99se视频在线观看| 成人免费在线看片| 乱码第一页成人| 97精品国产| 日韩一区二区三区av| 色呦呦呦在线观看| 久久亚洲午夜电影| 激情小说亚洲一区| 天天天天天天天天操| 亚洲精品suv精品一区二区| 成人精品一区二区三区电影| 视色,视色影院,视色影库,视色网| eeuss国产一区二区三区 | 欧美在线综合视频| 超碰在线观看免费| 欧美日韩亚洲一区二区三区在线观看 | 亚洲一区二区精品在线观看| 国产成人精品aa毛片| 亚洲黄网在线观看|