JVM基礎系列第10講:垃圾回收的幾種類型

我們經常會聽到許多垃圾回收的術語,例如:Minor GC、Major GC、Young GC、Old GC、Full GC、Stop-The-World 等。但這些 GC 術語到底指的是什么,它們之間的區別到底是什么?今天我們就來詳細說說。

Minor GC

從年輕代空間回收內存被稱為 Minor GC,有時候也稱之為 Young GC。對于 Minor GC,你需要知道的一些點:

  • 當 JVM 無法為一個新的對象分配空間時會觸發 Minor GC,比如當 Eden 區滿了。所以 Eden 區越小,越頻繁執行 Minor GC。
  • 當年輕代中的 Eden 區分配滿的時候,年輕代中的部分對象會晉升到老年代,所以 Minor GC 后老年代的占用量通常會有所升高。
  • 質疑常規的認知,所有的 Minor GC 都會觸發 Stop-The-World,停止應用程序的線程。對于大部分應用程序,停頓導致的延遲都是可以忽略不計的,因為大部分 Eden 區中的對象都能被認為是垃圾,永遠也不會被復制到 Survivor 區或者老年代空間。如果情況相反,即 Eden 區大部分新生對象不符合 GC 條件(即他們不被垃圾回收器收集),那么 Minor GC 執行時暫停的時間將會長很多(因為他們要JVM要將他們復制到 Survivor 區或老年代)。

Major GC

從老年代空間回收內存被稱為 Major GC,有時候也稱之為 Old GC。

許多 Major GC 是由 Minor GC 觸發的,所以很多情況下將這兩種 GC 分離是不太可能的。當進行 Minor GC 時,如果年輕代空間不夠,那么就會觸發 Major GC 將存活較久的對象移動到老年代中,從而騰出更多的年輕代空間。

Full GC

Full GC 是清理整個堆空間 —— 包括年輕代、老年代和永久代(如果有的話)。因此 Full GC 可以說是 Minor GC 和 Major GC 的結合。

當準備要觸發一次 Minor GC 時,如果發現年輕代的剩余空間比以往晉升的空間小,則不會觸發 Minor GC 而是轉為觸發 Full GC。因為JVM此時認為:之前這么大空間的時候已經發生對象晉升了,那現在剩余空間更小了,那么很大概率上也會發生對象晉升。既然如此,那么我就直接幫你把事情給做了吧,直接來一次 Full GC,整理一下老年代和年輕代的空間。

另外,即在永久代分配空間但已經沒有足夠空間時,也會觸發 Full GC。

Stop-The-World

Stop-The-World,中文一般翻譯為全世界暫停,是指在進行垃圾回收時因為標記或清理的需要,必須讓所有執行任務的線程停止執行任務,從而讓垃圾回收線程回收垃圾的時間間隔。

在 Stop-The-World 這段時間里,所有非垃圾回收線程都無法工作,都暫停下來。只有等到垃圾回收線程工作完成才可以繼續工作。可以看出,Stop-The-World 時間的長短將關系到應用程序的響應時間,因此在 GC 過程中,Stop-The-World 的時間是一個非常重要的指標。

參考資料

  • Minor GC、Major GC和Full GC之間的區別 - ImportNew
  • Major GC和Full GC的區別是什么?觸發條件呢? - 知乎

如果只是看,其實無法真正學會知識的。為了幫助大家更好地學習,我建了一個虛擬機群,專門討論學習 Java 虛擬機方面的內容,每周針對我所發文章進行討論答疑。如果你有興趣,關注「Java技術精選」公眾號,通過右下角菜單「入群交流」加我好友,小助手會拉你入群。


JVM系列目錄

  • JVM基礎系列開篇:為什么要學虛擬機?
  • JVM基礎系列第1講:Java 語言的前世今生
  • JVM基礎系列第2講:Java 虛擬機的歷史
  • JVM基礎系列第3講:到底什么是虛擬機?
  • JVM基礎系列第4講:從源代碼到機器碼,發生了什么?
  • JVM基礎系列第5講:字節碼文件結構
  • JVM基礎系列第6講:Java虛擬機內存結構
  • JVM基礎系列第7講:JVM類加載機制
  • JVM基礎系列第8講:JVM 垃圾回收機制
  • JVM基礎系列第9講:JVM垃圾回收器
  • JVM基礎系列第10講:垃圾回收的幾種類型
  • JVM基礎系列第11講:JVM參數之堆棧空間配置
  • JVM基礎系列第12講:JVM參數之查看JVM參數
  • JVM基礎系列第13講:JVM參數之追蹤類信息
  • JVM基礎系列第14講:JVM參數之GC日志配置
  • JVM基礎系列第15講:JDK性能監控命令

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/388979.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/388979.shtml
英文地址,請注明出處:http://en.pswp.cn/news/388979.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

模擬退火學習

模擬退火學習 作業部落網上講的不錯的(他好像還有一些其他的東西、、、) 引入 對于一些題目,無法直接算出答案或者想不到正解,想到隨機找答案,那么模擬退火就是一種有系統方法的隨機算法 沒用的不需要了解的來源 百度百科...... 模擬退火算法…

spotify 數據分析_我的Spotify流歷史分析

spotify 數據分析Spotisis /spo-ti-sis/ noun The analysis of one’s Spotify streaming history using Python.Spotisis / spo-ti-sis / 名詞使用Python分析一個人的Spotify流歷史。 I was reading through a lot of data science related guides and project ideas when I …

idea 搜索不到gsonformat_Idea中GsonFormat插件安裝

這個教不的期是范添事大部會基近說小間進圍磚本的程主要是學習IntelliJ IDEA 如何通過GsonFormat插件將JSONObject格式的String 支器事的后功發久這含層請間業在屏有隨些氣和域,實按控幻近持的前時來能過后些的處求也務瀏蔽等機站風滾或默現鈕制燈近持的前時來能過后…

intellig idea中jsp或html數據沒有自動保存和更換字體

主題一:保存數據jsp intellig idea是自動保存數據的,看到沒有保存 解決方案: 成功解決 主題二:更換字體: 或者快捷鍵CtelAlts 成功解決 轉載于:https://www.cnblogs.com/weibanggang/p/9398498.html

java 環境變量

1.確保安裝jrd jdk 2.環境變量配置 (1)新建->變量名"JAVA_HOME",變量值"C:\Java\jdk1.8.0_05"(JDK的安裝路徑) (2)編輯->變量名"Path",在原變量值的最后面加上“;%JAVA_HOME%\bin;%JAVA_HOME…

陸濤喜歡夏琳嗎_夏琳·香布利斯(Charlene Chambliss):從心理學到自然語言處理和應用研究

陸濤喜歡夏琳嗎技術系列中的女性 (WOMEN IN TECHNOLOGY SERIES) Interest in data science has been exponentially increasing over the past decade, and more and more people are working towards making a career switch into the field. In 2020, articles and YouTube v…

【angularJS】簡介

簡介 AngularJS 是一個 JavaScript 框架。它可通過 <script> 標簽添加到 HTML 頁面。 AngularJS 通過 指令 擴展了 HTML&#xff0c;且通過 表達式 綁定數據到 HTML。 AngularJS 是一個 JavaScript 框架。它是一個以 JavaScript 編寫的庫。 AngularJS 是以一個 JavaScrip…

爬取淘寶商品信息selenium+pyquery+mongodb

爬取淘寶商品信息,通過selenium獲得渲染后的源碼,pyquery解析,mongodb存儲 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC from selenium.common.exceptions import Timeout…

紋個雞兒天才小熊貓_給熊貓用戶的5個提示

紋個雞兒天才小熊貓A popular Python library used by those working with data is pandas, an easy and flexible data manipulation and analysis library. There are a myriad of awesome methods and functions in pandas, some of which are probably less well-known tha…

本人服務器遭受黑客長期攻擊,特把這幾天做的一些有用的安全方面總結出來,以方便以后查閱

消息隊列iis360northrarsql2000 netscren本人服務器遭受黑客長期攻擊&#xff0c;特把這幾天做的一些有用的安全方面總結出來&#xff0c;以方便以后查閱&#xff0c;希望這次徹底解覺黑客的攻擊&#xff0c;特次謝謝“冷雨夜”的一些提示。 windows 2003服務器安全設置方法 0…

用戶與用戶組管理

linux最優秀的地方之一&#xff0c;就在于他的多用用戶、多任務環境。 用戶及用戶組的概念 1、文件所有者 由于linux是一個多用戶、多任務的系統。因此可能常常會有很多人同時使用這臺主機來進行工作的情況發生&#xff0c;為了考慮每個人的隱私權以及每個人的喜好的工作環境&a…

代碼 摳圖_3 行 Python 代碼 5 秒摳圖的 AI 神器,根本無需 PS,附教程

曾幾何時&#xff0c;「摳圖」是一個難度系數想當高的活兒&#xff0c;但今天要介紹的這款神工具&#xff0c;只要 3 行代碼 5 秒鐘就可以完成高精度摳圖&#xff0c;甚至都不用會代碼&#xff0c;點兩下鼠標就完成了。感受下這款摳圖工具摳地有多精細&#xff1a;是不是很贊&a…

python函數使用易錯舉例

關于嵌套&#xff1a; 嵌套使用中&#xff0c; retrun inner ---> 返回的是函數的地址 retrun inner() &#xff1a; ---> 運行inner()函數 ---> 運行inner()函數后的返回值a&#xff08;假設&#xff09;返回上級 --> retrun inner()得到返回值a 如…

圖像離群值_什么是離群值?

圖像離群值你是&#xff01; (You are!) Actually not. This is not a text about you.其實并不是。 這不是關于您的文字。 But, as Gladwell puts it in Outliers, if you find yourself being that type of outlier, you’re quite lucky. And rare.但是&#xff0c;正如Gla…

混合模型和EM---混合高斯

2019獨角獸企業重金招聘Python工程師標準>>> 混合高斯 最大似然 用于高斯混合模型的EM 轉載于:https://my.oschina.net/liyangke/blog/2986520

永恒python地速_立竿見影地把你的 Python 代碼提速7倍

之前曾經測試計算斐波那契數列的幾種方法&#xff0c;其中基于遞歸的方法是速度最慢的&#xff0c;例如計算第 40 項的值&#xff0c;需要 36 秒。如下圖所示。要提高運算速度&#xff0c;根本辦法當然是改進算法。不過算法的提高是一個長期積累加上靈機一動的過程。我們今天要…

頂尖大學實驗室的科研方法_這是來自頂尖大學的5門免費自然語言處理課程

頂尖大學實驗室的科研方法Data Science continues to be a hot topic, but more specifically, Natural Language Processing (NLP) is increasing in demand.數據科學仍然是一個熱門話題&#xff0c;但更具體地說&#xff0c;自然語言處理(NLP)的需求正在增長。 Broadly spea…

Python學習---django知識補充之CBV

Django知識補充之CBV Django: url --> def函數 FBV[function based view] 用函數和URL進行匹配 url --> 類 CBV[function based view] 用類和URL進行匹配 POSTMAN插件 http://blog.csdn.net/zzy1078689276/article/details/77528249 基于CBV的登…

「CH2101」可達性統計 解題報告

CH2101 可達性統計 描述 給定一張N個點M條邊的有向無環圖&#xff0c;分別統計從每個點出發能夠到達的點的數量。N,M≤30000。 輸入格式 第一行兩個整數N,M&#xff0c;接下來M行每行兩個整數x,y&#xff0c;表示從x到y的一條有向邊。 輸出格式 共N行&#xff0c;表示每個點能夠…

藍圖解鎖怎么用_[UE4藍圖][Materials]虛幻4中可互動的雪地材質完整實現(一)

不說廢話&#xff0c;先上個演示圖最終成果&#xff08;腳印&#xff0c;雪地可慢慢恢復&#xff0c;地形可控制&#xff09;主要原理&#xff08;白話文&#xff09;&#xff1a;假如你頭上是塊白色并且可以透視的平地&#xff0c;來了個非洲兄弟踩上面&#xff0c;你拿起單反…