java中GC的日志认识详解
不同的垃圾回收器 他们的日志都是完成不一样的,看懂日志是解决和发现问题的重中之重。
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的日志认识详解的更多相关文章
- Java 中的异常和处理详解
Java 中的异常和处理详解 原文出处: 代码钢琴家 简介 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常.异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误 ...
- Java中23种经典设计模式详解
Java中23种设计模式目录1. 设计模式 31.1 创建型模式 41.1.1 工厂方法 41.1.2 抽象工厂 61.1.3 建造者模式 101.1.4 单态模式 131.1.5 原型模式 151. ...
- Java中String对象创建机制详解()
一String 使用 private final char value来实现字符串存储 二Java中String的创建方法四种 三在深入了解String创建机制之前要先了解一个重要概念常量池Const ...
- java中ReentrantLock核心源码详解
ReentrantLock简介 ReentrantLock是一个可重入且独占式的锁,它具有与使用synchronized监视器锁相同的基本行为和语义,但与synchronized关键字相比,它更灵活. ...
- 关于Java中进程和线程的详解
一.进程:是程序的一次动态执行,它对应着从代码加载,执行至执行完毕的一个完整的过程,是一个动态的实体,它有自己的生命 周期.它因创建而产生,因调度而运行,因等待资源或事件而被处于等待状态,因完成任务而 ...
- Java中的IO流系统详解(转载)
摘要: Java 流在处理上分为字符流和字节流.字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符.字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字节数组. Java ...
- Java中String 的equals 和==详解
一.Java中数据存储区域包括: 1.寄存器:最快的存储区,由编译器根据需求进行分配,我们在程序中无法控制. 2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new ...
- java中vector与hashtable操作详解
众所周知,java中vector与hashtable是线程安全的,主要是java对两者的操作都加上了synchronized,也就是上锁了.因此 在vector与hashtable的操作是不会出现问题 ...
- Java中的IO流系统详解
Java 流在处理上分为字符流和字节流.字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符.字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字节数组. Java 内用 U ...
随机推荐
- Spring 02: Spring接管下的三层项目架构
业务背景 需求:使用三层架构开发,将用户信息导入到数据库中 目标:初步熟悉三层架构开发 核心操作:开发两套项目,对比Spring接管下的三层项目构建和传统三层项目构建的区别 注意:本例中的数据访问层, ...
- Spring(二)-生命周期 + 自动装配(xml) +自动装配(注解)
1.生命周期 **Spring容器的 bean **的生命周期: 1.1 默认生命周期 1.1.1 生命周期 调用构造方法,创建实例对象: set方法,给实例对象赋值: init 初始化方法 初始化对 ...
- 【manim】含有add_updater更新函数become的物体移动方法
在manim社区版本中, 一.对于一般的物体,移动的方法分为 (瞬移) 和 (带动画移动) 1.瞬移 #直接对物体操作即可 obj.shift(LEFT) #瞬间移 ...
- CF-D. Another Problem About Dividing Numbers
Problem - D - Codeforces 题意:问能否在进行K次操作的情况下,将两个数变得相同,操作为每次选择一因子,然后除该因子. 题解:要判断该数最多能进行几次除的操作,其实就是判断这个数 ...
- 仙人指路,引而不发,Go lang1.18入门精炼教程,由白丁入鸿儒,Golang中New和Make函数的使用背景和区别EP16
Golang只有二十五个系统保留关键字,二十几个系统内置函数,加起来只有五十个左右需要记住的关键字,纵观编程宇宙,无人能出其右.其中还有一些保留关键字属于"锦上添花",什么叫锦上添 ...
- 水晶报表中用Code128制作条型码的方法
一.在[文件系统]中新建一个[Fonts文件夹],然后添加[Code128.ttf]文件. 二.在水晶报表里的[字段资源管理器]的[公式字段]中新建一个公式字段.点击[使用编辑器]之后弹出[公式工作室 ...
- Docker 部署 RocketMQ 双主双从模式( 版本v4.7.0)
文章转载自:http://www.mydlq.club/article/96/ 系统环境: 系统版本:CentOS 7.8 RocketMQ 版本:4.7.0 Docker 版本:19.03.13 一 ...
- 第一个Django应用 - 第五部分:测试
一.自动化测试概述 什么是自动化测试 测试是一种例行的.不可缺失的工作,用于检查你的程序是否符合预期. 测试可以划分为不同的级别.一些测试可能专注于小细节(比如某一个模型的方法是否会返回预期的值?), ...
- 第1篇----Istio原理篇
Istio是什么 ◎ Istio是一个用于服务治理的开放平台. ◎ Istio是一个Service Mesh形态的用于服务治理的开放平台. ◎ Istio是一个与Kubernetes紧密结合的适用于云 ...
- Kibana探索数据(Discover)
总结说明: 1.先在Management/Kibana/Index Patterns 界面下添加索引模式(前提是有索引数据) 2.在Discover界面选中响应的索引模式 3.开启Kibana 查询语 ...