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] [ ...
随机推荐
- Excel数据可视化图表设计需要注意的几个问题
大数据发展迅速的时代,数据分析驱动商业决策.对于庞大.无序.复杂的数据要是没经过合适的处理,价值就无法体现. 可以想象一本没有图片的教科书.没有图表.图形或是带有箭头和标签的插图或流程图,那么这门学 ...
- 报表工具为什么我推荐用Smartbi,数据分析师和初学者都能灵活运用
在很多人入门数据分析师或者投身大数据行业的时候,肯定会接触到报表工具,很多人这时候就会去使用一些Excel插件的报表工具,但是很多报表工具都是需要下载一系列的软件,配置各种复杂的环境.尤其是一些数据分 ...
- 【C#表达式树 七】 反射在表达式树中的应用 ListInitExpression
以下都是反射在表达式树中的应用 对象初始化 Expression.MemberInit 反射获取成员(字段 或者属性),绑定数据,然后生成 成员表达式节点 class Animal { public ...
- Spring MVC视图解析器(ViewResolver)
视图解析器(ViewResolver)是 Spring MVC 的重要组成部分,负责将逻辑视图名解析为具体的视图对象.Spring MVC 提供了很多视图解析类,其中每一项都对应 Java Web 应 ...
- MySQL 学习笔记(一)MySQL 事务的ACID特性
MySQL事务是什么,它就是一组数据库的操作,是访问数据库的程序单元,事务中可能包含一个或者多个 SQL 语句.这些SQL 语句要么都执行.要么都不执行.我们知道,在MySQL 中,有不同的存储引擎, ...
- C#10新特性-全局和隐式usings
.NET 6发布后支持C#10,C# 10 向 C# 语言添加了很多功能,今天我们分享一下全局和隐式usings的使用: using 指令简化了使用命名空间的方式. C# 10 包括一个新的全局 us ...
- JZ-029-最小的 K 个数
标题 最小的 K 个数 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4. 题目链接: 最小的 K 个数 代码 import ja ...
- XML序列化与反序列化接口对接实战,看这篇就够了
关键字:c# .NET XML 序列化 反序列化 本文为接口对接实践经验分享,不对具体的XML概念定义进行阐述:涉及工具类及处理方法已在生产环境使用多年,可放心使用.当然如果你发现问题,或有不同想法, ...
- 快速整透Redis中的压缩列表到底是个啥
压缩列表简介 压缩列表(ziplist)是由一个连续内存组成的顺序型数据结构.一个压缩列表可以包含任意多个节点,每个节点上可以保存一个字节数组或整数值.它是Redis为了节省内存空间而开发的. 压缩列 ...
- 矩池云安装/修改 cuda、cudnn、nvcc、tensorRT 教程
在整个机器学习的过程中,配置环境一直是一个比较复杂的事情,今天介绍几种根据英伟达官方文档来配置环境的方法. 安装方案 https://gitlab.com/nvidia/container-image ...