你面試過程中的攔路虎 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
- 資料質量:BI整合策略的“攔路虎”
- 你走過最長的路 ,就是機器學習過程中的彎路機器學習
- Java常見異常彙總 這些“攔路虎”你遇見了嗎?Java
- 30%抽成已成為遊戲行業進步“攔路虎”?遊戲行業
- 盤點機器學習過程中的彎路,帶你避坑!機器學習
- 從網路請求過程看OkHttp攔截器HTTP
- 簡歷&面試&擇業篇-在面試的過程中你所需要注意的問題面試
- 遊戲出海攔路虎——看起來簡單做起來難的本地化遊戲
- RAG工程實踐攔路虎之一:PDF格式解析雜談
- 新聞分析:PC進入64位時代 驅動程式仍是攔路虎
- 關於學習過程中走過的彎路
- 面試中的這些坑,你踩過幾個?面試
- 面試官問:Mybatis中的TypeHandler你用過嗎?面試MyBatis
- 記2天面試的過程面試
- 理想的技術面試過程面試
- 女生在求職面試過程中,如何巧妙回答面試官的尷尬問題求職面試
- 創業公司操蛋的面試過程創業面試
- UI設計師的面試過程UI面試
- 區塊鏈面試工作招聘過程中的40個問題區塊鏈面試
- 監聽器,過濾器,攔截器的執行過程和對比過濾器
- spring中的過濾器與攔截器Spring過濾器
- 面試問爛的 Spring MVC 過程面試SpringMVC
- 面試就業過程的記錄了面試就業
- 帶你認識網際網路架構的演變過程架構
- 物聯網攻擊的攔路虎:阿里雲重磅推出物聯網安全運營中心Link SOC阿里
- 網路定址過程
- ??面試官:你會如何設計QQ中的網路協議?面試協議
- 瞭解你的敵人 網路釣魚攻擊的實現過程
- ORACLE儲存過程中建立子過程的測試!Oracle儲存過程
- 面試題總結: 類的載入過程面試題
- 阿里面試:dubbo的服務引用過程阿里面試
- Sqlserver中的儲存過程SQLServer儲存過程
- 軟體測試面試過程解析面試
- 微軟研究院面試過程概述微軟面試
- 記一次前端面試的全過程前端面試
- 我的面試準備過程--leetcode樹面試LeetCode