不同的垃圾回收器 他们的日志都是完成不一样的,看懂日志是解决和发现问题的重中之重。

Parallel Scavenge + Parallel Old 日志

启动参数

-XX:+UseParallelGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -Xloggc:gc.log

ygc日志

fullgc日志 如下图 主要是 gc日志上多了回收老年代、元空间、GC类型变为Full GC

年轻代的total=eden+1个s区 如图中 10752+1536=12288k

GC触发原因常见的有

  • Allocation Failure 年轻代中没有足够区域能够存放需要分配的数据而失败
  • Ergonomics 常见于FullGc中 是因为 UseAdaptiveSizePolicy 开启了自适应调整策略而发生的GC 很正常的
  • Metadata GC Threshold 常见于Full Gc 元空间不足
G1

G1有几种类型的gc,YGC (仅回收年轻代) ,Miexd GC(年轻代和部分老年代都回收 也叫混合GC),Full GC (整堆回收 g1中一般很少出现fullgc), 启动参数如下

-XX:+UseG1GC -XX:InitiatingHeapOccupancyPercent=40 -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -Xloggc:gc.log

MiexdGc 回收流程参考 回收流程

YGC 日志格式

Miexd GC日志格式

miexd gc日志就能完全体现出G1回收流程的几个阶段 初始标记-并发标记-最终标记-筛选回收

Full gc日志格式

Full Gc日志看起来很轻松 在G1中应该避免不要产生FullGC

CMS

cms是老年代回收器 日志格式也是分阶段打印的 具体流程可以参考 cms回收阶段流程 启动参数如下

-Xms50m  -Xmx50m -XX:+UseConcMarkSweepGC  -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -Xloggc:gc.log

老版的垃圾回收器如 parNew 串行不再去花太多时间研究了 一般也用不上 有更好的选择。

在线日志分析工具 https://gceasy.io/gc-index.jsp

没怎么用过 https://sourceforge.net/projects/gcviewer/

参考 https://zhuanlan.zhihu.com/p/267388951

java中GC的日志认识详解的更多相关文章

  1. Java 中的异常和处理详解

    Java 中的异常和处理详解 原文出处: 代码钢琴家 简介 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常.异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误 ...

  2. Java中23种经典设计模式详解

    Java中23种设计模式目录1. 设计模式 31.1 创建型模式 41.1.1 工厂方法 41.1.2 抽象工厂 61.1.3 建造者模式 101.1.4 单态模式 131.1.5 原型模式 151. ...

  3. Java中String对象创建机制详解()

    一String 使用 private final char value来实现字符串存储 二Java中String的创建方法四种 三在深入了解String创建机制之前要先了解一个重要概念常量池Const ...

  4. java中ReentrantLock核心源码详解

    ReentrantLock简介 ReentrantLock是一个可重入且独占式的锁,它具有与使用synchronized监视器锁相同的基本行为和语义,但与synchronized关键字相比,它更灵活. ...

  5. 关于Java中进程和线程的详解

    一.进程:是程序的一次动态执行,它对应着从代码加载,执行至执行完毕的一个完整的过程,是一个动态的实体,它有自己的生命 周期.它因创建而产生,因调度而运行,因等待资源或事件而被处于等待状态,因完成任务而 ...

  6. Java中的IO流系统详解(转载)

    摘要: Java 流在处理上分为字符流和字节流.字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符.字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字节数组. Java ...

  7. Java中String 的equals 和==详解

    一.Java中数据存储区域包括: 1.寄存器:最快的存储区,由编译器根据需求进行分配,我们在程序中无法控制. 2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new ...

  8. java中vector与hashtable操作详解

    众所周知,java中vector与hashtable是线程安全的,主要是java对两者的操作都加上了synchronized,也就是上锁了.因此 在vector与hashtable的操作是不会出现问题 ...

  9. Java中的IO流系统详解

    Java 流在处理上分为字符流和字节流.字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符.字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字节数组. Java 内用 U ...

随机推荐

  1. Redis 18 Jedis

    参考源 https://www.bilibili.com/video/BV1S54y1R7SB?spm_id_from=333.999.0.0 版本 本文章基于 Redis 6.2.6 概述 Jedi ...

  2. Redis常用指令之string、list、set、zset、hash

    Redis之五大类型常用指令 redis的一些小知识 redis服务器端口默认是6379 在编译完成后的bin目录下启动服务端:redis-server 客户端连接操作:redis-cli -h lo ...

  3. 跟我学Python图像处理丨基于灰度三维图的图像顶帽运算和黑帽运算

    摘要:本篇文章结合灰度三维图像讲解图像顶帽运算和图像黑猫运算,通过Python调用OpenCV函数实现. 本文分享自华为云社区<[Python图像处理] 十三.基于灰度三维图的图像顶帽运算和黑帽 ...

  4. HTTP/3,它来了

    HTTP 3.0 是 HTTP 协议的第三个主要版本,前两个分别是 HTTP 1.0 和 HTTP 2.0 ,但其实 HTTP 1.1 我认为才是真正的 HTTP 1.0. 如果你对 HTTP 1.1 ...

  5. Webstorm设置背景图为Windows桌面背景

    桌面背景图会缓存在这个目录中,文件名不确定在改变桌面背景后会不会变. C:\Users\用户名\AppData\Roaming\Microsoft\Windows\Themes\CachedFiles ...

  6. 125. 验证回文串--LeetCode

    来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/valid-palindrome 著作权归领扣网络所有.商业转载请联系官方授权,非商业转载请注明出处. ...

  7. PerfView专题 (第八篇):洞察 C# 内存泄漏之寻找静态变量名和GC模式

    一:背景 这篇我们来聊一下 PerfView 在协助 WinDbg 分析 Dump 过程中的两个超实用技巧,可能会帮助我们快速定位最后的问题,主要有如下两块: 洞察内存泄漏中的静态大集合变量名. 验证 ...

  8. [CF1515F] Phoenix and Earthquake(图论推导,构造)

    题面 在紧张又忙碌地准备联合省选时,发生了大地震,把原本要参赛的 n n n 个城市之间的全部 m m m 条道路震垮了,使得原本互相都能到达的这 n n n 个城市无法交通了.现在,需要紧急恢复 n ...

  9. 【读书笔记】C#高级编程 第二十章 诊断

    (一)诊断概述 名称空间System.Diagnostics提供了用于跟踪.事件日志.性能测量以及代码协定的类.System.Diagnostics.Contracts名称空间中的类可以定义前提条件. ...

  10. Exchange 2019数据库切换

    最近在测试Exchange 2019的一些安装步骤.在测试到DAG的数据库切换的时候遇到了一些问题.An Active Manager operation failed. Error: The dat ...