看懂gc日志
使用的是:+PrintGCDetails -XX:+PrintGCTimeStamps
输出的日志格式:
[Times: user=0.03 sys=0.00, real=0.01 secs]
363.375: [GC 363.375: [ParNew: 39424K->3249K(39424K), 0.0054790 secs]
69520K->37044K(126848K), 0.0055800 secs] 8.672: [Full GC 8.673: [Tenured: 26086K->30073K(87424K), 0.2213960 secs] 54718K->30073K(126848K),
[Perm : 37565K->37565K(37568K)], 0.2214900 secs] [Times: user=0.32 sys=0.01, real=0.23 secs]
[GC]和[Full GC]是垃圾回收的停顿类型,而不是区分是新生代还是年老代。- [
Full GC]说明发生了Stop-The-World。如果是调用System.gc()触发的,那么将显示的是[Full GC (System)。 - 【ParNew】,【
DefNew】, 【Tenured】, 【Perm】:表示 GC 发生的区域,区域的名称与使用的 GC 收集器相关。
- 【DefNew】:Serial 收集器中新生代名为 "Default New Generation"。
- 【ParNew】: “Parallel New Generation”。
- 【PSYoungGen】:对于 Parallel Scavenge 收集器,新生代名为 "PSYoungGen"。
- 年老代和永久代也相同,名称都由收集器决定。
4. 收集大小的影响:
- ParNew: 39424K->3249K(39424K) 表示 “GC 前该区域已使用容量 -> GC 后该区域已使用容量 (该区域内存总容量) ”。
- “69520K->37044K(126848K)”(方括号外) 表示 “GC 前Java堆已使用容量 -> GC后Java堆已使用容量 (Java堆总容量)”。
5. 花费时间: “0.0055800secs” 表示该区域GC所用时间,单位是秒。
6. [Times: user=0.32 sys=0.01, real=0.23 secs]
- user: 用户态消耗的CPU时间、
- sys:内核态消耗的CPU时间
- real: 操作从开始到结束所经过的墙钟时间。墙钟时间包括各种非运算的等待耗时,如IO等待、线程阻塞。CPU时间不包括等待时间,当系统有多核时,多线程操作会 叠加这些CPU时间,所以user或sys时间会超过real时间。
看懂gc日志的更多相关文章
- 一次CMS GC问题排查过程(理解原理+读懂GC日志)
这个是之前处理过的一个线上问题,处理过程断断续续,经历了两周多的时间,中间各种尝试,总结如下.这篇文章分三部分: 1.问题的场景和处理过程:2.GC的一些理论东西:3.看懂GC的日志 先说一下问题吧 ...
- [转]一次CMS GC问题排查过程(理解原理+读懂GC日志)
这个是之前处理过的一个线上问题,处理过程断断续续,经历了两周多的时间,中间各种尝试,总结如下.这篇文章分三部分: 1.问题的场景和处理过程:2.GC的一些理论东西:3.看懂GC的日志 先说一下问题吧 ...
- 一文看懂 K8s 日志系统设计和实践
上一篇中我们介绍了为什么需要一个日志系统.为什么云原生下的日志系统如此重要以及云原生下日志系统的建设难点,相信DevOps.SRE.运维等同学看了是深有体会的.本篇文章单刀直入,会直接跟大家分享一下如 ...
- 教你看懂 OpenStack 日志 - 每天5分钟玩转 OpenStack(29)
instance 从创建到删除的整个生命周期都是由 Nova 管理的. 后面各小节我们以 instance 生命周期中的不同操作场景为例,详细分析 Nova 不同组件如何协调工作,并通过日志分析加深大 ...
- O029、教你看懂OpenStack日志
参考https://www.cnblogs.com/CloudMan6/p/5456484.html instance 从创建到删除的整个生命周期都是有 Nova 管理的,后面各小节我们以inst ...
- 曹工杂谈:手把手带你读懂 JVM 的 gc 日志
一.前言 今天下午本来在划水,突然看到微信联系人那一个红点点,看了下,应该是博客园的朋友.加了后,这位朋友问了我一个问题: 问我,这两块有什么关系? 看到这段 gc 日志,一瞬间脑子还有点懵,嗯,这个 ...
- JVM基础系列第14讲:JVM参数之GC日志配置
说到 Java 虚拟机,不得不提的就是 Java 虚拟机的 GC(Garbage Collection)日志.而对于 GC 日志,我们不仅要学会看懂,而且要学会如何设置对应的 GC 日志参数.今天就让 ...
- java虚拟机(十一)--GC日志分析
GC相关:java虚拟机(六)--垃圾收集器和内存分配策略 java虚拟机(五)--垃圾回收机制GC 打印日志相关参数: -XX:+PrintGCDetails -XX:PrintGCTimestam ...
- JVM实用参数(八)GC日志
本系列的最后一部分是有关垃圾收集(GC)日志的JVM参数.GC日志是一个很重要的工具,它准确记录了每一次的GC的执行时间和执行结果,通过分析GC日志可以优化堆设置和GC设置,或者改进应用程序的对象分配 ...
随机推荐
- 使用Amoeba实现mysql读写分离机制
Amoeba的实用指南 http://docs.hexnova.com/amoeba/ 如何实现mysql读写分离 : 通常来说有两种方式: 1,应用程序层实现 2,中间件层实现 应用层实现 应用层实 ...
- https请求失败,解决方法
把请求头中 Content-Type 属性去掉就可以了
- 走迷宫(用队列bfs并输出走的路径)
#include <iostream> #include <stack> #include <string.h> #include <stdio.h> ...
- javascript 判断空数组
javascript里判断空数组不能用 []==[] 这样来判断,因为数组也是个对象,普通对象通过指针指向的内存中的地址来做比较 所以 []==[]结果为false,因此判断数组是否为空 用 [].l ...
- 第2课 GUI程序实例分析
1. GUI程序开发概述 (1)现代操作系统提供原生SDK支持GUI程序开发 (2)GUI程序开发是现代操作系统上的主流技术 (3)不同操作系统上的GUI开发原理相同 (4)不同操作系统上的GUI S ...
- DevExpress之XtraReport 学习
XtraReport 一.基本概念: XtraReports 中的每个报表都由 XtraRepot 类的一个实例表示,或者由该类的子类来表示(这种情况更常见). 因此,每个报表都作为带区的容器使用,而 ...
- 创建标签的两种方法insertAdjacentHTML 和 createElement 创建标签 setAttribute 赋予标签类型 appendChild 插入标签
1. 建立字符串和insertAdjacentHTML('beforeEnd', ) 2. 通过createElement 创建标签 setAttribute 赋予标签类型 appendChild ...
- c++经典排序算法全集(转)
C++排序算法全集 排序算法是一种基本并且常用的算法.由于实际工作中处理的数量巨大,所以排序算法对算法本身的速度要求很高. 一.简单排序算法 由于程序比较简单,所以没有加什么注释.所有的程序都给出了完 ...
- 【326】PIL 截图及图片识别
参考:另一种用python识别图片文字的方法 参考:Python人工智能之图片识别,Python3一行代码实现图片文字识别 参考:Python3+Selenium3环境构建填坑之旅 参考:基于pyth ...
- 微软AntiXSS防止xss攻击类库
AntiXSS,由微软推出的用于防止XSS攻击的一个类库,可实现输入白名单机制和输出转义. AntiXSS最新版的下载地址:http://wpl.codeplex.com 下载安装之后,安装目录下有以 ...