到底誰才是垃圾?
-
強(qiáng)引用(使用頻率:☆☆☆☆☆)
-
軟引用(使用頻率:☆☆☆☆)
-
弱引用(使用頻率:☆)
-
虛引用(使用頻率:程序員基本不會(huì)使用到)
堆內(nèi)存的詳細(xì)結(jié)構(gòu)
標(biāo)記-清除
標(biāo)記-清除就沒有優(yōu)點(diǎn)了嗎??jī)?yōu)點(diǎn)還是有的:速度快
-
優(yōu)點(diǎn)
-
缺點(diǎn)
標(biāo)記-復(fù)制
-
優(yōu)點(diǎn)
-
缺點(diǎn)
標(biāo)記-整理
-
優(yōu)點(diǎn)
-
缺點(diǎn)
-
1、躲過15次GC。每次垃圾回收后,存活的對(duì)象的年齡就會(huì)加1,累計(jì)加到15次(jdk8默認(rèn)的),也就是某個(gè)對(duì)象躲過了15次垃圾回收,那么JVM就認(rèn)為這個(gè)是經(jīng)常被使用的對(duì)象,就沒必要再帶著年輕代中了。具體的次數(shù)可以通過 -XX:MaxTenuringThreshold 來設(shè)置在躲過多少次垃圾收集后進(jìn)去老年代。 -
2、動(dòng)態(tài)對(duì)象年齡判斷。規(guī)則:在某個(gè) Survivor 中,如果有一批對(duì)象的大小總是大于該 Survivor 的 50%,那么此時(shí)大于等于該批對(duì)象年齡的對(duì)象機(jī)會(huì)會(huì)直接到老年代中。 -
3、大對(duì)象直接進(jìn)入老年代。-XX:PretenureSizeThreshold 來設(shè)置大對(duì)象的臨界值,大于該值的就被認(rèn)為是大對(duì)象,就會(huì)直接進(jìn)入老年代。
躲過15次 GC
-XX:PretenureSizeThreshold參數(shù)來設(shè)置。
動(dòng)態(tài)對(duì)象年齡判斷
大對(duì)象直接進(jìn)入老年代
-XX:HandlerPromotionFailure的參數(shù)是否設(shè)置了,這個(gè)參數(shù)表示:是否設(shè)置空間分配擔(dān)保。
是:就會(huì)判斷老年代的剩余的空間的大小是否是大于之前的每一次 MinorGC 后進(jìn)入老年代的對(duì)象的平均的大小
否:那么此時(shí)就會(huì)進(jìn)行FULL GC來為老年代騰出一些空間
假設(shè)現(xiàn)在開啟了空間分配擔(dān)保,并且發(fā)現(xiàn)之前的每次 Minor GC 后的對(duì)象的平均大小(假設(shè)是10 M)是小于老年代可用空間的大小(假設(shè)現(xiàn)在是12 M)的,那么就會(huì)認(rèn)為本次 Minor GC 后差不多也是10 M的對(duì)象進(jìn)入到老年代。但是如果最終垃圾回收剩余存活對(duì)象大于13 M,那么就直接 OOM;
java -XX:+PrintCommandLineFlags -version命令可以查看當(dāng)前 JVM 使用的垃圾收集器
新生代的垃圾收集器
-XX:UseSerialGC;開啟后,會(huì)使用Serial(Young區(qū)使用)+Serial Old(Old區(qū)使用)組合收集器。新生代、老年代都會(huì)使用串行回收收集器,新生代使用【標(biāo)記-復(fù)制算法】老年代使用【標(biāo)記-整理算法】
-
可控的吞吐量(運(yùn)行用戶的的代碼時(shí)間/(運(yùn)行用戶的代碼時(shí)間+垃圾收集時(shí)間))。也即運(yùn)行100分 鐘,垃圾收集時(shí)間為1分鐘,那么吞吐量就是99%。高吞吐量意味著高效的CPU利用率 -
自適應(yīng)調(diào)節(jié)策略也是Parallel Scavenge 和 ParNew 的一個(gè)重要的區(qū)別(虛擬機(jī)會(huì)根據(jù)當(dāng)前的 系統(tǒng)的運(yùn)行情況手機(jī)性能監(jiān)控信息,動(dòng)態(tài)的調(diào)整這些參數(shù)以提供最合適的停頓時(shí)間(- XX:MaxGCPauseMillis)或最大的吞吐量) -
如果新生區(qū)激活-XX:+UseParallelGC(或者是-XX:UseParallelOldGC他們可以互相激活)老 年區(qū)就自動(dòng)使用Parallel Old,使用Parallel Scavenge收集器 - -XX:ParallelGCThreads=N 表示啟動(dòng)多少個(gè)線程 cpu>8 N=5/8 cpu<8 N=實(shí)際個(gè)數(shù)
老年代的垃圾收集器
技術(shù)交流群
最近有很多人問,有沒有讀者交流群,想知道怎么加入。
最近我創(chuàng)建了一些群,大家可以加入。交流群都是免費(fèi)的,只需要大家加入之后不要隨便發(fā)廣告,多多交流技術(shù)就好了。
目前創(chuàng)建了多個(gè)交流群,全國(guó)交流群、北上廣杭深等各地區(qū)交流群、面試交流群、資源共享群等。
有興趣入群的同學(xué),可長(zhǎng)按掃描下方二維碼,一定要備注:全國(guó) Or 城市 Or 面試 Or 資源,根據(jù)格式備注,可更快被通過且邀請(qǐng)進(jìn)群。
往期推薦
字節(jié)跳動(dòng)將取消大小周,加班要打申請(qǐng)!此前1/3員工不同意,有人擔(dān)心“一年少賺近10萬”
谷歌:. apk 成為歷史!
在線求CR,你覺得我這段Java代碼還有優(yōu)化的空間嗎?
評(píng)論
圖片
表情
