遇上鵝廠面試--JVM我也能和面試官說上半小時

背景

最近小編出去找機會,隨便看下自己的競爭力。當遇上騰訊面試官時,看你簡歷上寫了熟悉JVM,你能和我聊聊JVM垃圾收集器嗎?

好的我要開始裝逼了:

JVM垃圾收集器,主要有串行垃圾收集器,並行垃圾收集器,CMS垃圾收集器,G1垃圾收集器。
在JDK8之前,用的是CMS垃圾收集器,JDK9開始使用的是G1垃圾收集器。
我們先說下JVM的內存模型,主要是由堆、棧、本地方法區、程序計數器,永久代/元素空間。
在這裏插入圖片描述
堆又分爲年輕代和年老代。年輕代分爲Eden,Survivor1、Survivor2區,當Eden區內存滿的時候回觸發young gc,使用的是複製算法,複製算法有個缺點是會需要兩倍的空閒空間。
當年老代內內存滿的時候會觸發full gc,使用的算法是標記清除算法。流程是
1,初始化標記(STW) 2,併發標記 3,預清除 4 ,重新標記(STW) 5,併發清除。

G1垃圾收集器的特點:取消了年輕代和年老代在物理區域上的劃分,將堆劃分成若干個區域,這裏就不用考慮單個區域內存溢出的問題了 。新增加了H區,用來存大對象,當有大對象的時候,不會提前觸發full gc,可以減少stw時間。當老年代內存達到45%的時候(默認設置,可以修改),會觸發mixed gc。 觸發full gc的時候主要流程是 1,初始化標記 2,併發標記 3,最終標記 4,併發清除。full gc的時候使用複製算法不會產生碎片化的問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章