JVM筆記九-GC收集器日誌信息學習

2020-11-29 凱哥Java

在上一篇文章中,我們通過代碼運行結果,查看到JVM的堆內存邏輯上分區是三部分,物理上分區是2部分,以及是新生代分區三部分,佔比分布是8/1/1。而且我們還通過代碼和堆JVM參數配置,製造出了OOM異常。下面我們就來分析GC回收器的日誌信息。

先來看看,OOM後,GC詳細日誌信息:

新生區的伊甸園區GC日誌分析

新生區的Eden區的GC,叫法:GC或者是YGC或者是MinorGC或者是輕GC

我們複製一條來分析:

分段說明:

:GC的類型;:YongGC前新生代的內存佔用量:YoungGC後新生代的內存佔用量;:新生代總內存大小;:YoungGC前JVM堆內存佔用量;:YoungGc後JVM堆內存使用量;:JVM堆內存總大小;:YoungGC耗時:YoungGC用戶耗時;:YoungGC系統耗時:YoungGC實際耗時年老代GC日誌分析:

年老代GC的叫法:Full GC或者FGC或者MajorGC或者重GC

同樣,我們拿出OOM之前的一條GC日誌進行分析

[Full GC (Ergonomics①) [PSYoungGen②: 96K③->0K④ (2048K⑤)] [ParOldGen⑥: 5094K⑦->4007K⑧ (5632K⑨)] 5190K⑩->4007K十一 (7680K十二), [Metaspace十三: 3314K十四 ->3314K 十五(1056768K十六)], 0.0074234 secs十七] [Times: user=0.08十八 sys=0.01十九, real=0.01 secs二十]:

標誌說明:

:GC類型:Young區:GC前Young區內存佔用:GC後Young區內存佔用:Young區總大小:Old區:GC前Old區內存佔用:GC後Old區內存佔用:Old區總大小:GC前堆內存佔用:GC後堆內存佔用:JVM堆內存總大小:元空間區:GC前佔用內存:GC後佔用內存:元空間總大小:GC耗時:用戶耗時:系統耗時:實際耗時如下圖:

接下來,我們繼續學習的是JVM垃圾回收的四種算法了。歡迎大家和凱哥(凱哥Java:kaigejava)繼續一起學習:引用計數算法、複製算法、標記清除、標記壓縮這四種算法。

相關焦點

  • 大廠必知必會——G1收集器詳解及調優
    於是忙完了手頭上的活之後開始了gc調優。處理過程將gc日誌列印出來。可以在虛擬機的啟動gc參數中增加-XX:+PrintGCDetails參數,將每次的GC的耗時信息列印出來。分析日誌,找到到底是哪些GC階段導致了GC時間的上漲。
  • 滿滿的一整篇,全是 JVM 核心知識點!
    用來主要存儲類信息、常量池、靜態變量、JIT 編譯後的代碼等數據。PermGen(永久代)中類的元數據信息在每次 FullGC 的時候可能會被收集,但成績很難令人滿意。而且為 PermGen 分配多大的空間因為存儲上述多種數據很難確定大小。因此官方在 JDK8 剔除移除永久代。
  • GC調優在Spark應用中的實踐
    對此,我們該怎樣調試Spark應用的垃圾收集器呢?在本文中,我們從應用實例出發,結合具體問題場景,探討了Spark應用的GC調優方法。按照經驗來說,當我們配置垃圾收集器時,主要有兩種策略——Parallel GC和CMS GC。前者注重更高的吞吐量,而後者則注重更低的延遲。兩者似乎是魚和熊掌,不能兼得。在實際應用中,我們只能根據應用對性能瓶頸的側重性,來選取合適的垃圾收集器。
  • JAVA系列-GC
    OOM1) 常見OOM異常類型(1) StackOverFlowError棧內存溢出,用於深度方法調用(循環遞歸);(2) OutOfMemoryError:Java heap space用於變量申請的空間大於jvm的最大值;(3) OutOfMemoryError
  • Java進行內存洩露 GC 分析都有哪些常用好用的工具
    使用Java語言開發應用程式,雖然JVM幫我們進行了GC收集、清除工作;但是使用不當的話,還是會導致某些對象常駐堆空間無法給垃圾收集器清除,導致內存洩露、內存溢出等情況,今天盤點一下在項目中進行內存洩露分析和GC分析的一些常用、好用的工具。
  • JVM&G1 GC實戰來了!深入淺出的機制,深度把握JVM高級特性和實踐
    了解各個選項單獨或混合使用後的運行輸出對G1 GC輸出日誌進行一些解釋。深入學習G1 GC的各種基本概念。深入學習G1 GC的設計理念。深入了解G1 GC的各類特性。為第5章節針對G1GC的性能優化方案做知識準備。
  • 一些長時間GC停頓問題的排查及解決辦法
    接下來的cms gc日誌,由於碎片率非常高,從而導致promotion failure,然後發生concurrent mode failure,觸發的FullGC總計花了17.1365396秒才完成:{Heap before GC invocations=7430 (full 24):parnew generation total 134400K,
  • 百戰程式設計師分享:Java中GC回收機制
    關於回收有幾個方法:System.gc(); Sysytem.getRuntime().gc();但調用這兩個方法並不能立刻進行垃圾回收。GC回收的過程在 Java的存在周期是自動的,不需要分配和釋放內存,同時也避免了內存洩漏。
  • 程式設計師:深入理解JVM,從JVM層面來講Java多態
    我們使用javap -c DynamicDispatch.class 命令輸出這段代碼的字節碼:Compiled from "DynamicDispatch.java"public class jvm.DynamicDispatch {public jvm.DynamicDispatch
  • 求求你,別再隨便打日誌了,教你動態修改日誌級別
    loggerName是每一個Logger的配置信息一部分,除此之外還有日誌輸出級別等信息。關於為什麼不直接使用log4j和logback列印日誌,我在《為什麼阿里巴巴禁止工程師直接使用日誌系統(Log4j、Logback)中的 API》中分析過。Arthas改變日誌級別在開始介紹代碼實現之前,先介紹一個工具,也可以幫助我們的動態修改日誌級別。
  • 真空管收集器與平板收集器的比較
    熱力學的第一定律指出,熱能從熱轉移到冷,因此,當專門研究太陽能收集器中的能量傳遞時,傳導和對流幾乎總是意味著能量從較熱的收集器轉移到較冷的環境空氣中。這是因為需要將生活用水加熱到60°C或更高。為了使太陽能集熱器有效,必須將傳導(通過使用良好的絕緣)和對流(通過使用密封屏障)最小化。因此,太陽能集熱器只能通過輻射獲得能量,因此開發了吸收輻射但限制了再輻射量的選擇性塗層。
  • R時間序列分析學習筆記(二十四)—— ARIMA建模和模擬(十六)
    ( sin(jjs*pi/M) / (jjs*pi/M) ) * cos(jjs*freqs[j]))) list(frequencies=freqs, spectrum=spec)}往期回顧R時間序列分析學習筆記
  • 《太空工程師》正式版中文更新日誌
    《太空工程師》經過了5年漫長的EA階段,終於在3月1日發布正式的版本了,正式版除了修復了許多BUG外,還增加了許多新特性新玩法,下面小編就為大家帶來一篇「伍流」分享的正式版中文更新日誌,一起來看看吧。正式版中文更新日誌主要新特性新方塊:梯子;基本裝配機;氫氣發動機;小型電池(1X1X1);風力發電機;救生倉(Survival Kit)生存模式改進生存新手指引劇情「永不投降」劇情科技樹重生醫療倉(生存模式)新的聊天模式新的遭遇戰其他新特性
  • 《我的世界》等價交換能量收集器如何使用 等價交換能量收集器使用...
    在我的世界手遊中等價交換能量收集器可以將物資轉化為高能量貯存物轉換路線,那麼下面就讓我們一起來看一下吧! 等價交換能量收集器怎麼用 能量轉換器會... 在我的世界手遊中等價交換能量收集器究竟該怎麼使用呢?
  • 我的世界中子態素收集器怎麼用
    18183首頁 我的世界 我的世界中子態素收集器怎麼用 我的世界中子態素收集器怎麼用 來源:18183
  • 《我的世界手機版》能量收集器怎麼用 能量收集器使用攻略
    導 讀 我的世界手機版能量收集器怎麼用?在我的世界手機版中,能量轉換器是非常好用的東西,那麼遊戲中的這個能量收集器要怎麼使用呢?
  • 初一學習方法:做筆記
    做筆記是門很少有人研究的學問。會做筆記的同學可能上課時記得並不多,但很有成效。有些同學的筆記只有自己看得懂,但也很有效。相反,有的同學筆記記得很多,上課時幾乎一直在記筆記,不僅效果差,甚至會影響聽課效果。所以學會有效地做筆記對於每一個同學來說都是很重要的。   1.如何記課堂筆記?
  • 費曼學習法、時間統計法、整體學習法、康奈爾筆記、思維導圖
    費曼學習法的具體過程:選擇目標、模擬教學、查漏補缺、精簡類比。費曼學習法不只是一種學習方法,還是一種思維方式。學習一個新問題時,首先要判斷信息屬於哪一類,究竟是隨意信息、觀點信息、過程信息、具體信息,還是抽象信息。獲取信息要準確、精簡,並理解信息的內涵。