你面試過程中的攔路虎 MinorGC
點選上方“業餘草”,選擇“置頂公眾號”
第一時間獲取技術乾貨和業界資訊!
昨天,我一個朋友給我說他在抖音上發了一個短視訊,獲得了 300 個贊。我說,你要麼被抖音廢了,要麼就廢了(解除安裝)抖音,要麼你就把抖音玩到極致,成為抖音網紅。
我在下載抖音的時候,玩了一個小時就把它解除安裝了。因為我深知,要想成功,便不要沉迷於能輕易給你短期快感的一切東西。
其實,作為程式設計師也是一樣的。平時工作,你面向百度程式設計。慢慢的你會迷上搜尋,無法擺脫它。不想看書,也不想進步去學習,因為所有的東西,在你眼裡看起來是一搜尋就能解決。其實,這只是你廢了的開始。
今天我給大家講一下,進階中級、高階、專家級。。。的必備課,GC 中的 MinorGC。
JVM 中的堆,一般分為三大部分:新生代、老年代、永久代。新生代通常使用 MinorGC,老年代通常使用 MajorGC,永久代通常使用 Full GC。
新生代主要是用來存放新生的物件。一般佔據堆的1/3空間。由於頻繁建立物件,所以新生代會頻繁觸發 MinorGC 進行垃圾回收。新生代 MinorGC 又通常被分為:Eden 區、ServivorFrom、ServivorTo 三個區。
MinorGC 通常採用複製演算法。流程是先複製,再清空,最後互換。
複製的過程很簡單。首先,Eden 區滿的時候回出發第一次 GC,把存活的物件拷貝到 SurvivorFrom 區,當 Eden 區再次出發 GC 的時候會掃描 Eden 區和 From 區,對這兩個區域進行垃圾回收。
經過這次回收後還存活的物件,則直接複製到 To 區,同時將這些物件的年齡 +1。如果有物件年齡已經達到了老年的標準(年齡閾值,可以通過-XX:MaxTenuringThreshold來設定),則直接複製到老年代。
發生 MinorGC 後,Eden 和 ServivorFrom 區的物件,就被複制到其他區了。
另外一個需要注意的是,如果新建立的物件佔用記憶體很大,則直接分配到老年代。並且 SurvivorTo 區是沒有進行任何回收動作的。
清空就很好理解了。因為經過 MinorGC 後,Eden 和 ServivorFrom 區的物件,就被複制到老年代或者 SurvivorTo 區。這個時候就可以對 Eden 區和 ServivorFrom 進行清空了。
清空之後,還有一個互換動作。就是把 SurvivorTo 的物件互換給 ServivorFrom 區。SurvivorTo 和 SurvivorFrom 互換,原來的 SurvivorTo 稱為下一次 GC 時的 SurvivorFrom 區。部分物件會在 From 和 To
區域中來回複製,如此交換15次(JVM引數 MaxTenuringThreshold決定,預設引數是15),最終如果還是存活,就存入老年代。
這就是 MinorGC,非常的簡單。大家在面試中只需要記住,ServivorTo 一開始是空的,複製演算法流程是先複製,再清空,最後互換,另外一個需要注意的是,如果新建立的物件佔用記憶體很大,則直接分配到老年代。還有就是 Eden 和 Survivor 區的預設佔比為 8:1。回答到這些關鍵點,至少我個人會算面試者過關。
更多面試題,如:GC觸發的條件?什麼時候觸發?GC回收對什麼東西進行回收?GC回收做了什麼或者說是操作了什麼,怎麼操作的?等等這些面試題,可以通過我的面試題小程式學習到!
10T技術資源大放送!包括但不限於:C/C++,Linux,Python,Java,PHP,人工智慧,GO等等。在公眾號內回覆對應關鍵字或框架名字,即可免費獲取!!
你再主動一點點 我們就有故事了
相關文章
- 盤盤政務大資料安全的“攔路虎”,你被攔住了嗎?大資料
- Haskell 的攔路虎,不要打而要「躲」Haskell
- 簡歷&面試&擇業篇-在面試的過程中你所需要注意的問題面試
- Java常見異常彙總 這些“攔路虎”你遇見了嗎?Java
- 你走過最長的路 ,就是機器學習過程中的彎路機器學習
- 記2天面試的過程面試
- 從網路請求過程看OkHttp攔截器HTTP
- 面試中的這些坑,你踩過幾個?面試
- 面試官問:Mybatis中的TypeHandler你用過嗎?面試MyBatis
- 面試問爛的 Spring MVC 過程面試SpringMVC
- 軟體測試面試過程解析面試
- 30%抽成已成為遊戲行業進步“攔路虎”?遊戲行業
- 女生在求職面試過程中,如何巧妙回答面試官的尷尬問題求職面試
- 面試就業過程的記錄了面試就業
- 為什麼說計件制是精益生產的“攔路虎”
- 區塊鏈面試工作招聘過程中的40個問題區塊鏈面試
- RAG工程實踐攔路虎之一:PDF格式解析雜談
- ArkWeb頁面攔截與自定義響應 - 控制載入過程Web
- 面試題總結: 類的載入過程面試題
- 面試問爛的 Spring AOP 原理、SpringMVC 過程面試SpringMVC
- 遊戲出海攔路虎——看起來簡單做起來難的本地化遊戲
- 邦芒面試:面試過程很愉快,卻沒被錄用?面試
- ??面試官:你會如何設計QQ中的網路協議?面試協議
- 面試官:你分析過SpringMVC的原始碼嗎?面試SpringMVC原始碼
- 【搞定Jvm面試】 面試官:談談 JVM 類載入過程是怎樣的?JVM面試
- 面試八股文:你寫過自定義任務排程器嗎?面試
- 軟體測試過程中的痛點思考
- 你確定能通過現在的VUE面試嗎?Vue面試
- 請用物件導向的思想,談一談面試的過程物件面試
- 面試官:你分析過mybatis工作原理嗎?面試MyBatis
- 監聽器,過濾器,攔截器的執行過程和對比過濾器
- 測試工程師看過來!面試,你真的會嗎?工程師面試
- 電商APP測試過程中遇到的問題APP
- 嘗試 WebGPU 過程中掉的一些坑WebGPU
- spring中的過濾器與攔截器Spring過濾器
- 我主動給面試者加薪 1K 的死鎖面試題和 jstack 分析過程面試題JS
- 程式設計師筆試和麵試過程中,有哪些是面試官眼中的減分項和加分項?程式設計師筆試面試
- 程式設計師面試過程中,該怎麼判斷該公司好壞?程式設計師面試