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] [ ...
随机推荐
- [旧][Android] View 工作原理(一)
备注 原发表于2016.05.23,资料已过时,仅作备份,谨慎参考 前言 本文参考<Android 开发艺术探索>及网上各种资料进行撰写,目的是为自己理清 Android 中 View 的 ...
- 在windev中实现BS架构级的灵活排版
windev是CS架构,但却能够实现BS架构级的灵活排版.玩过CS架构的老铁们,感受应会都如我,如获新生!因为苦于没有一张好画皮久矣!在windev中,要实现灵活,专业,自适应和非常丰富的排版,可以关 ...
- 【C# .Net GC】强制垃圾回收 和System GC
属性 GC.MaxGeneration:获取系统当前支持的最大代数. 方法 GC.GetTotalMemory(bool forceFullCollection) 方法 true表示该方法先做垃圾收 ...
- Zabbix使用python批量添加主机及主机资产信息-从零到无
- - 时间:2020年11月10日 - - 作者:飞翔的小胖猪 前言: 使用zabbix作为基础环境的监控系统时,面对现网在用的2000+台把这些主机添加到zabbix监控中是一个问题,当然zabb ...
- Pycharm新建Python项目
关于新建项目时配置项目环境(最好是每个项目单独的虚拟Python环境): Python为什么要使用虚拟环境-Python虚拟环境的安装和配置-virtualenv Pycharm创建Python项目 ...
- 如何使用在线工具手动验证JWT签名
如何使用在线工具手动验证JWT签名 先丢一个转换地址:https://cryptii.com/ 首先: jwt分为三个部分:header,payload,verifysignature ...
- 学习c语言时对一些疑问的测试
#include<stdio.h>#include<string.h> int main(){/* 1 */// int a[3][3]={6,1,2,3,4,5};// in ...
- laravel报错 : No application encryption key has been specified.
创建了新的laravel项目后, 运行提示:No application encryption key has been specified 解决方法: 这个是由于没有配置好 APP_KEY 在终端上 ...
- promise 理解与总结
对Promise的理解 Promise是异步编程的一种解决方案,可以获取异步操作的消息,避免了地狱回调,它比传统的解决方案回调函数和事件更合理和更强大. 所谓Promise,简单说就是一个容器,里面保 ...
- ArcMap操作随记(15)
1.字段顺序的调整 [图层属性]→[字段]([高级排序]功能也在这里) 2.所谓热点地区: 本身是高值,邻居也是高值,才成为热点地区(这是操作中总结出的,但其实了解原理就很简单了,详细请查看空间自相关 ...