GC日志浅析
//java 开发环境,使用HotSpot的虚拟机,64位,windows 开发环境
Java HotSpot(TM) 64-Bit Server VM (25.151-b12) for windows-amd64 JRE (1.8.0_151-b12), built on Sep 5 2017 19:33:46 by "java_re" with MS VC++ 10.0 (VS2010)
//初始内存:4k/页,物理内存(8g--本机内存,2g空闲),交换区(9.4g,1.7g空闲)
Memory: 4k page, physical 8270992k(2282388k free), swap 9889848k(1844640k free)
//启动参数:初始化对内存126m(物理内存1/64),最大堆内存2g(物理内存1/4),打印gc日志,打印gc原因,打印gc日期戳
CommandLine flags: -XX:InitialHeapSize=132335872 -XX:MaxHeapSize=2117373952 -XX:+PrintGC -XX:+PrintGCCause -XX:+PrintGCDateStamps -
//打印gc详情 打印gc时间戳,压缩类对象实例,压缩类指针,使用大页内存
XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:-UseLargePagesIndividualAllocation -
//使用Parallel 垃圾回收器
XX:+UseParallelGC
//时间 ,gc(内存分配失败)(使用Parallel Scavenge)新生代 ,内存大小从33280K变成了5107K,新生代内存大小38400K。老年代从33280K变成了5186K,新生代使用时间0.0087103 秒,一共使用时间0.01秒
2021-02-18T11:58:31.364+0800: 2.712: [GC (Allocation Failure) [PSYoungGen: 33280K->5107K(38400K)] 33280K->5186K(125952K), 0.0087103 secs] [Times: user=0.01 sys=0.01, real=0.01 secs]
2021-02-18T11:58:32.266+0800: 3.613: [GC (Allocation Failure) [PSYoungGen: 38387K->5119K(38400K)] 38466K->6115K(125952K), 0.0090626 secs] [Times: user=0.06 sys=0.00, real=0.01 secs]
2021-02-18T11:58:33.041+0800: 4.388: [GC (Allocation Failure) [PSYoungGen: 38399K->5107K(38400K)] 39395K->8534K(125952K), 0.0566775 secs] [Times: user=0.16 sys=0.00, real=0.06 secs]
2021-02-18T11:58:34.392+0800: 5.740: [GC (Allocation Failure) [PSYoungGen: 38387K->5098K(71680K)] 41814K->10989K(159232K), 0.0214275 secs] [Times: user=0.08 sys=0.00, real=0.02 secs]
//元空间gc,达到了元空间的阈值,(使用Parallel Scavenge)新生代,从34271K变成了5112K(内存大小71680K);老年代,从40162K变成了12982K(内存大小159232K),新生代使用时间0.0178599秒,共使用0.06 秒(可以看出,这里元空间的gc时间,是新生代2.5倍)
2021-02-18T11:58:35.110+0800: 6.457: [GC (Metadata GC Threshold) [PSYoungGen: 34271K->5112K(71680K)] 40162K->12982K(159232K), 0.0178599 secs] [Times: user=0.06 sys=0.00, real=0.02 secs]
//full gc,包括新生代、老年代、元空间(永久代,放在方法区里,主要存放类新信息、方法信息等),达到了元空间的阈值,(使用Parallel Scavenge)新生代,从5112K变成了0K(内存大小71680K,完全回收);老年代(使用了ParOld,Parallel Scavenge老年代版本 垃圾回收器),从7870K变成了7740K(内存大小56320K),新生代使用时间0.0790402 秒,共使用0.27 秒(可以看出,这里元空间的gc时间,是新生代的3倍))
2021-02-18T11:58:35.128+0800: 6.475: [Full GC (Metadata GC Threshold) [PSYoungGen: 5112K->0K(71680K)] [ParOldGen: 7870K->7740K(56320K)] 12982K->7740K(128000K), [Metaspace: 20885K->20885K(1069056K)], 0.0790402 secs] [Times: user=0.27 sys=0.00, real=0.08 secs]
2021-02-18T11:58:36.444+0800: 7.792: [GC (Allocation Failure) [PSYoungGen: 66560K->5518K(113152K)] 74300K->13267K(169472K), 0.0080603 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
2021-02-18T11:58:38.382+0800: 9.732: [GC (Allocation Failure) [PSYoungGen: 113038K->8692K(138752K)] 120787K->17655K(195072K), 0.0214940 secs] [Times: user=0.05 sys=0.01, real=0.02 secs]
2021-02-18T11:58:43.737+0800: 15.085: [GC (Metadata GC Threshold) [PSYoungGen: 130761K->10222K(177664K)] 139723K->24379K(233984K), 0.0210900 secs] [Times: user=0.11 sys=0.03, real=0.02 secs]
2021-02-18T11:58:43.759+0800: 15.107: [Full GC (Metadata GC Threshold) [PSYoungGen: 10222K->0K(177664K)] [ParOldGen: 14156K->21200K(92672K)] 24379K->21200K(270336K), [Metaspace: 34810K->34810K(1081344K)], 0.1114812 secs] [Times: user=0.61 sys=0.02, real=0.11 secs]
2021-02-18T11:58:45.481+0800: 16.829: [GC (Allocation Failure) [PSYoungGen: 167424K->9056K(180736K)] 188624K->30264K(273408K), 0.0126356 secs] [Times: user=0.02 sys=0.02, real=0.01 secs]
2021-02-18T11:58:47.195+0800: 18.542: [GC (Allocation Failure) [PSYoungGen: 176480K->11091K(229888K)] 197688K->32308K(322560K), 0.0190669 secs] [Times: user=0.02 sys=0.02, real=0.02 secs]
---------额外连接,gc的算法:
https://blog.csdn.net/high2011/article/details/80177473
------额外连接,gc优化方案
https://jiankunking.com/java-jvm-gc-g1-notes.html
GC日志浅析的更多相关文章
- 浅析JVM中的GC日志
目录 一.GC日志的格式分析 二.运行时开启GC日志 一.GC日志的格式分析 在讲述GC日志之前,我们先来运行下面这段代码 package com.example; public class Test ...
- 【转】gc日志分析工具
性能测试排查定位问题,分析调优过程中,会遇到要分析gc日志,人肉分析gc日志有时比较困难,相关图形化或命令行工具可以有效地帮助辅助分析. Gc日志参数 通过在tomcat启动脚本中添加相关参数生成gc ...
- JVM实用参数(八)GC日志
本系列的最后一部分是有关垃圾收集(GC)日志的JVM参数.GC日志是一个很重要的工具,它准确记录了每一次的GC的执行时间和执行结果,通过分析GC日志可以优化堆设置和GC设置,或者改进应用程序的对象分配 ...
- GC之七--gc日志分析工具
性能测试排查定位问题,分析调优过程中,会遇到要分析gc日志,人肉分析gc日志有时比较困难,相关图形化或命令行工具可以有效地帮助辅助分析. Gc日志参数 通过在tomcat启动脚本中添加相关参数生成gc ...
- 理解GC日志
每一种收集器的日志形式都是由它们自身的实现所决定的,换而言之,每个收集器的日志格式都可以不一样.但虚拟机设计者为了方便用户阅读,将各个收集器的日志都维持一定的共性,例如以下两段典型的GC日志: 33. ...
- GC日志介绍
每一种收集器的日志形式都是由它们自身的实现所决定的,换而言之,每个收集器的日志格式都可以不一样.但虚拟机设计者为了方便用户阅读,将各个收集器的日志都维持一定的共性,例如以下两段典型的GC日志: 33. ...
- 【转载】Java垃圾回收内存清理相关(虚拟机书第三章),GC日志的理解,CPU时间、墙钟时间的介绍
主要看<深入理解Java虚拟机> 第三张 P84 开始是垃圾收集相关. 1. 1960年诞生于MIT的Lisp是第一门采用垃圾回收的语言. 2. 程序计数器.虚拟机栈.本地方法栈3个区域随 ...
- Java GC 日志输出分析
搜到的几篇讲GC日志的文章,学到了很多东西.但是有些错误或者不够精确的地方. 因此自己尝试着总结一下. 先写个程序,然后结合程序解释每句话的意思. 运行参数 -Xms200M -Xmx200M -Xm ...
- 理解Java的GC日志
分析如下GC日志:[GC [PSYoungGen: 9216K->1024K(9216K)] 1246196K->1246220K(1287040K), 0.2398360 secs] [ ...
随机推荐
- C# mutex互斥锁构造
概念 Mutext 出现的比monitor更早,而且传承自COM,当然,waitHandle也是它的父类,它继承了其父类的功能,有趣的是Mutex的脾气非常的古怪,它 允许同一个线程多次重复访问共享区 ...
- 无法将具有语句体的lambda表达式转换为表达式树
很早就碰到了这个问题,当时也没有深入的研究,趁着空闲,遂把这个问题研究清楚. (一)普通案例 下面从一个普通的案例入手,下面准备两个List集合,都是放在内存里面的(需要模拟到远端执行的时候,我们是通 ...
- 五、Java控制流程
Java流程控制* 用户交互Scanner.Scanner进阶使用 用户交互Scanner 之前我们学习的基本语法中我们并没有实现程序和人的交互,但是Java给我们提供了这样一个工具类,我们可以获 ...
- Chapter05 流程控制(Process Control)
目录 Chapter05 流程控制 5.1 顺序控制 5.2 分支控制 if-else 单分支基本语法: 双分支基础语法: 多分支基础语法 5.3 嵌套分支 5.4 switch分支结构 5.5 Fo ...
- Linux 磁盘inode字节数占满的问题
查看ext系列文件系统的信息 #dumpe2fs /dev/sdc1 Inode count: 65536 inode号数量 Block count: 262144 块数量 Reserved bloc ...
- Nebula Graph 在企查查的应用
本文首发于 Nebula Graph Community 公众号 背景 企查查是企查查科技有限公司旗下的一款企业信用查询工具,旨在为用户提供快速查询企业工商信息.法院判决信息.关联企业信息.法律诉讼. ...
- 编译OneAPI(支持Nvidia显卡)
开始使用DPC++ 官方安装教程 预备条件 请确保当前开发环境满足如下条件: git cmake版本需要满足3.14及以上. python版本3.6以上的python. nijia版本1.8及以上(使 ...
- LGP5824口胡
万 恶 之 源 十 二 重 计 数 法 先鸽子了 球有序,盒子有序 答案明显为 \(m^n\). 球有序,盒子有序,每个盒子最多放一个 答案明显为 \(\binom{m}{n}n!\). 球有序,盒子 ...
- linux signal-list
[root@bogon ~]# kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) ...
- 【面经】MySql常见问题
1. 数据库三范式是什么? 1. 第一范式(1NF):字段具有原子性,不可再分.(所有关系型数据库系统都满足第一范式数据库表中的字段都是单一属性的,不可再分) 2. 第二范式(2NF)是在第一范式(1 ...