什么是 fullgc

GC

GC 全稱為garbage collection,中文含義為垃圾回收,在jvm中的含義為回收無用內存空間

Young space

中文名為年輕代或者新生代,為JVM 堆的一部分,由分代GC概念劃分而來,保存生命周期較短的對象

Tenured space

中文名為老年代或年老代,為JVM 堆的一部分,由分代GC概念劃分而來,保存生命周期較長的對象

Minor GC

minor gc指的是發生在年輕代或者說新生代(Young space)中的gc,也有人稱其為young gc或者ygc,在下文中我們統一使用minor gc表示

Major GC

major gc指的是發生在老年代(Tenured space)中的gc,也有人稱為old gc,o gc,cms gc等,在下文我們統一使用major gc表示

stop the world

指的是用戶線程在運行至安全點(safe point)或安全區域(safe region)之后,就自行掛起,進入暫停狀態,對外的表現看起來就像是全世界都停止運轉了一樣,而不論何種gc算法,不論是minor gc還是major gc都會stop the world,區別只在于stop the world的時間長短。

什么是Full GC

先說一下結論,Full GC這個概念是沒有官方定義的,而且含義還特別混亂,在不同地方表達的含義是不同的,需要就不同的場景分別進行討論。

大眾認知上

在通常意義上人們口中說的Full GC為一次特殊GC行為的描述,這次GC會回收整個堆的內存,包含老年代,新生代,metaspace等,這個是最常見的一種認知,很多人也就了解到這個程度,因此在遇到一些特殊場景的時候就會發現實際情況和自己的認知會發生沖突

從GC日志上

在gc.log中會發現在部分gc日志頭中也有Full GC這樣的字眼,這里表示的含義是在這次GC的全過程中,都是Stop The world的狀態,也就是說在這次GC的全過程中所有用戶線程都是處于暫停的狀態,那么在這里要噴一下中文jvm神書《深入理解JVM》了,在第二版第89頁有這么一段話:

GC 日志開頭的“[GC”和“[Full GC”說明了這次垃圾收集的停頓類型,而不是用來區分新生代GC還是老年代GC的。如果有“Full”,說明這次GC是發生了Stop-The-World的,例如下面這段新生代收集器ParNew的日志也會出現“[Full GC”(這一般是因為出現了分配 擔保失敗之類的問題 .所以才導致STW)。如果是調用System.gc()方法所觸發的收集,那么在這里將顯示“[Full GC (System)”。

這段話的描述是錯誤的,因為在前面說過,不論何種gc算法,不論新生代或是老年代,其gc都會發生stop the world,這里正確的描述是這次GC的全過程都是Stop-The-World的

從JDK自帶的工具上

使用jstat -gc命令能夠查看到制定java 線程的gc次數,那么在經過我的多次嘗試以及對比之后,我發現了使用jstat 查出來的FGC 次數和時間,實際上指的是老年代的收集器發生Stop the world 的次數和持續時間,對應本文而言,就是CMS收集器的Stop the world次數和時間

其他含義(坑爹版)

前面不是說到我在監控大盤上看到這個應用平均一分鐘發生了十多次”Full GC”么,在我弄明白了前面兩個Full GC的含義之后查看了gc.log文件,隨后發現該應用實際上一次Full GC都沒有出現,然后咨詢了一下提供監控數據的同學,結果他說是通過JMX獲取的,代碼為:

ManagementFactory.getGarbageCollectorMXBeans()
然后眾所周知,使用MXBean獲取到的只是收集器的執行次數,和Full GC半毛錢關系都沒有啊,隨后在追問了一下,發現做監控系統的同學直接把CMS收集器的收集次數當做了Full GC的次數來統計,what the fuck????,只能說對于FUll GC的概念真的有很多人是一直沒弄懂過的

結束語
在這篇文章快寫完的時候,用google隨便搜了一下就在首頁找到一篇對于各類gc概念介紹得比較透徹的文章,和使用度娘一搜首頁全是各種抄來抄去的錯誤文章相比,對比簡直是太強烈了,由此得出結論,技術類的資料能在外網查就在外網查吧,省時又省力,最后附上我找到的這篇文章貌似還是plumbr的聯合創始人寫的,不得不說很給力了

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

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

相關文章

APP外包開發的iOS開發語言

學習iOS開發需要掌握Swift編程語言和相關的開發工具、框架和技術。而學習iOS開發需要時間和耐心,尤其是對于初學者。通過堅持不懈的努力,您可以逐步掌握iOS開發技能,構建出功能豐富、優質的移動應用。今天和大家分享學習iOS開發的一些建議方法…

【數據結構系列】鏈表

💝💝💝歡迎來到我的博客,很高興能夠在這里和您見面!希望您在這里可以感受到一份輕松愉快的氛圍,不僅可以獲得有趣的內容和知識,也可以暢所欲言、分享您的想法和見解。 推薦:kuan 的首頁,持續學…

解決hbase節點已下線,但在status中顯示為dead問題

工作中需要下線4臺hbase小節點,下線完成后使用status 命令查看,有一臺為dead狀態: 使用status detailed 查看,發現“hd-03"這臺節點是dead。 檢查各節點配置文件無誤,并使用 /opt/hbase/bin/hbase-daemon.sh restart master 重啟兩個…

less基本使用

1 less中的變量 //對值進行聲明 link-color: #ccc//定義變量名稱 .{sleName} {}bg: background-color; //定義屬性名稱 .container {{bg}: red; }2 繼承(復用重復樣式) //繼承必須位于選擇器最后 //繼承選擇器名不能為變量 .a:hover:extend(.b) {}.a {…

走出迷宮(多組輸入bfs)

鏈接:登錄—專業IT筆試面試備考平臺_牛客網 來源:牛客網 題目描述 小明現在在玩一個游戲,游戲來到了教學關卡,迷宮是一個N*M的矩陣。 小明的起點在地圖中用“S”來表示,終點用“E”來表示,障礙物用“#…

淺談人工智能技術與物聯網結合帶來的好處

物聯網是指通過互聯網和各種技術將設備進行連接,實時采集數據、交互信息的網絡,對設備實現智能化自動化感知、識別和控制,給人們帶來便利。 人工智能是計算機科學的一個分支,旨在研究和開發能夠模擬人類智能的技術和方法。人工智能…

Redis: 詳解、使用教程和示例

Redis: 詳解、使用教程和示例 什么是 Redis? Redis(Remote Dictionary Server)是一個開源的、內存數據存儲系統,它可以用作數據庫、緩存和消息中間件。它支持多種數據結構,如字符串、哈希表、列表、集合、有序集合等…

Hadoop組件

前言 Hadoop 是一個能夠對大量數據進行分布式處理的軟件框架。具有可靠、高效、可伸縮的特點。 HDFS(hadoop分布式文件系統) 是hadoop體系中數據存儲管理的基礎。他是一個高度容錯的系統,能檢測和應對硬件故障。

后院失火、持續虧損!Mobileye半年報「不回避」競爭壓力

"客戶在2023年上半年非常謹慎,導致增長率低于正常水平,但我們已經看到下半年回暖趨勢,預計下半年交付將比去年同期增長16%,遠高于上半年。"這是Mobileye在近日公司半年報發布會上的預判。 公開數據顯示,今年…

Python 實現Selenium錄屏的一種方法(圖片整合成動態圖)

由于UI層自動化的不穩定性,經常會遇到執行中斷或用例失敗的問題,以下是一些常見的措施。 1.詳細的日志 2.定位出錯時截圖 3.Pytest的緩存機制(可以記錄成功了哪些失敗了哪些) 4.自動重試機制(如pytest-rerunfailures) 5.用例錄像 用例錄像是最直觀的一…

2023網絡安全常用工具匯總(附學習資料+工具安裝包)

幾十年來,攻擊方、白帽和安全從業者的工具不斷演進,成為網絡安全長河中最具技術特色的燈塔,并在一定程度上左右著網絡安全產業發展和演進的方向,成為不可或缺的關鍵要素之一。 話不多說,網絡安全10款常用工具如下 1、…

Opencv4基于C++基礎入門筆記:圖像 顏色 事件響應 圖形 視頻 直方圖

效果圖??????:opencv人臉識別效果圖(請叫我真愛粉) 先看一下效果圖勾起你的興趣! 文章目錄: 一:環境配置搭建 二:圖像 1.圖像讀取與顯示 main.cpp 運行結果 2.圖像色彩空間轉換 2.1 換色彩 test.h …

感受RFID服裝門店系統的魅力

嘿,親愛的時尚追隨者們!今天小編要給你們帶來一股時尚新風潮,讓你們感受一下什么叫做“RFID服裝門店系統”,這個超酷的東西! 別著急,先別翻白眼,小編來解釋一下RFID是什么玩意兒。它是射頻識別…

云計算——存儲虛擬化功能

作者簡介:一名云計算網絡運維人員、每天分享網絡與運維的技術與干貨。 座右銘:低頭趕路,敬事如儀 個人主頁:網絡豆的主頁????? 目錄 前期回顧 前言 一.存儲虛擬化功能 1.精簡磁盤和空間回收 2.快照 (1&a…

面試熱題(反轉字符串中的單詞)

給你一個字符串 s ,請你反轉字符串中 單詞 的順序。 單詞 是由非空格字符組成的字符串。s 中使用至少一個空格將字符串中的 單詞 分隔開。 返回 單詞 順序顛倒且 單詞 之間用單個空格連接的結果字符串。 注意:輸入字符串 s中可能會存在前導空格、尾隨空格…

JVM——棧和堆概述,以及有什么區別?

方法棧 方法棧并不是某一個 JVM 的內存空間,而是我們描述方法被調用過程的一個邏輯概念。 在同一個線程內,T1()調用T2(): T1()先開始,T2()后開始;T2()先結束,T1()后結束。 堆和棧概述 從英文單詞角度來…

Maven介紹,部署在eclipse中

目錄 一.Maven介紹 1,什么是maven? 2. 為什么maven會在企業中大量使用? 3.沒有使用maven的前后區別? 4.maven在Java開發中的實際效果圖 二.maven部署在eclipse中 1.下載maven在其官方網址下載(當然實際下載也要根據個人的…

服務器安裝Tomcat

下載Tomcat 下載地址在這: Tomcat官網 下載完成以后把壓縮包上傳到服務器中(我傳到了www/java),進行解壓(解壓到),如果沒有進行指定解壓到哪里,默認是到root文件夾中 tar -zxvf /www/java/apache-tomcat-9.0.103.tar.…

統計學補充概念03-核密度估計

概念 核密度估計(Kernel Density Estimation,簡稱 KDE)是一種非參數統計方法,用于估計隨機變量的概率密度函數(Probability Density Function,PDF)。它通過在每個數據點周圍放置核函數&#xf…

day 10 | 232.用棧實現隊列、 225. 用隊列實現棧

目錄&#xff1a; 解題及思路學習 232.用棧實現隊列 https://leetcode.cn/problems/implement-queue-using-stacks/ 模擬題&#xff0c;用兩個棧來實現隊列的功能。 class MyQueue { public:stack<int> stIn;stack<int> stOut;/** Initialize your data struc…