博客
关于我
性能监控与调优(下篇)
阅读量:544 次
发布时间:2019-03-06

本文共 2177 字,大约阅读时间需要 7 分钟。

目录

分析GC日志

01-GC日志参数

在这里插入图片描述

02-GC日志格式

复习 GC

针对HotSpot VM的实现,它里面的GC按照回收区域又分为两大种类型:一种是部分收集(Partial GC),一种是整堆收集(Full GC)

·部分收集:不是完整收集整个Java堆的垃圾收集。其中又分为:
·新生代收集(Minor Gc / Young GC):只是新生代(Eden\So,s1)的垃圾收集
·老年代收集(Major Gc / old Gc):只是老年代的垃圾收集。
·目前,只有CMS GC会有单独收集老年代的行为。
·注意,很多时候Major GC会和Full GC混淆使用,需要具体分辨是老年代回收还是整堆回收。
·混合收集(Mixed Gc):收集整个新生代以及部分老年代的垃圾收集。
·目前,只有G1 GC会有这种行为

哪些情况会触发Full GC?

老年代空间不足

方法区空间不足
显式调用System.gc()
Minor GC进入老年代的数据的平均大小大于老年代的可用内存
大对象直接进入老年代,而老年代的可用空间不足

日志分类

MinorGC

FulGC

在这里插入图片描述

GC日志结构分析

垃圾收集器

·使用Serial收集器在新生代的名字是Default New Generation,因此显示的是" [DefNew"。使用ParNew收集器在新生代的名字会变成"[ParNew",意思是"Parallel New Generation“·使用Parallel Scavenge收集器在新生代的名字是"[PSYoungGen" ,这里的3DK1.7使用的就

是PSYoungGen
·使用Parallel old Generation收集器在老年代的名字是”[ParoldGen”·使用G1收集器的话,会显示为"garbage-first heap"
Allocation Failure
表明木次引起GC的原因是因为在年轻代中没有足够的空间能够存储新的数据了。

GC前后情况

通过图示,我们可以发现GC日志格式的规律一般都是:GC前内存占用一>GC后内存占用(该区域内存总大小)

[ PSYoungGen: 5986K->696K(8704K)] 5986K->704K(916K)
中括号内:GC回收前年轻代堆大小,回收后大小,(年轻代堆总大小)
括号外:GC回收前年轻代和老年代大小,回收后大小,(年轻代和老年代总大小)

GC时间

Gc日志中有三个时间:user,sys和real

.user - 进程执行用户态代码(核心之外)所使用的时间。这是执行此进程所使用的实际CPU时间,其他进程和此进程阻塞的时间并不包括在内。在垃圾收集的情况下,表示GC 线程执行所使用的CPU总时间。
.sys - 进程在内核态消耗的 CPU 时间,即在内核执行系统调用或等待系统事件所使用的CPU时间
real - 程序从开始到结束所用的时钟时间。这个时间包括其他进程使用的时间片和进程阻塞的时间(比如等待I/o完成)。对于并行gc,这个数字应该接近(用户时间+系统时间)除以垃圾收集器使用的线程数。
由于多核的原因,一般的GC事件中,real time是小于sys + user time的,因为一般是多个线程并发的去做Gc,所以real time是要小于sys+user time的。如果real>sys+user的话,则你的应用可能存在下列问题:IO负载非常重或者是CPU不够用。

MinorGC日志解析

例子:

在这里插入图片描述
解释:
在这里插入图片描述
在这里插入图片描述

FullGC日志解析

例子:

在这里插入图片描述
解释:
在这里插入图片描述
在这里插入图片描述

03-GC日志分析工具

如果想把GC日志存到文件的话,是下面这个参数:-Xloggc : /path/to/gc.log

然后就可以用一些工具去分析这些gc日志。

GCeasy

官网地址: https://gceasy.io/ GCeasy是一款在线的Gc日志分析器,可以通过Gc日志分析进行内存泄漏检测、GC暂停原因分析、JVM配置建议优化等功能,而且是可以免费使用的〈有一些服务是收费的)。

GCviewer

GCViewer是一个免费的、开源的分析小工具,用于可视化查看由SUN/Oracle,IBM,HP和BEAava虚拟机产生的垃圾收集器的日志。GCViewer用于可视化Java vw选项-verbose:gc和.NET生成的数据-Xloggc:。它还计算与垃圾回收相关的性能指标(吞吐量,累积的暂停,最长的暂停等)。当通过更改世代大小或设置初始堆大小来调整特定应用程序的垃圾回收时,此功能非常有用。

1.下载GCViewer工具

源码下载: https://github.com/ chewiebug/GCviewer
运行版本下载: https://github.com/chewiebug/GCviewer/wiki/Changelog
2.只需双击gcviewer-1.3x.jar或运行java -jar gcviewer-1.3x.jar(它需要运行java1.8 vm) ,即可启动Gcviewer

GChisto

是一款专业分析gc日志的工具,可以通过gc日志来分析: MinorGC、Full GC的次数、频率、持续时间等,通过列表、报表、图表等不同形式来反应gc的情况。

转载地址:http://uztdz.baihongyu.com/

你可能感兴趣的文章
mysql id自动增长 初始值 Mysql重置auto_increment初始值
查看>>
MySQL in 太多过慢的 3 种解决方案
查看>>
MySQL InnoDB 三大文件日志,看完秒懂
查看>>
Mysql InnoDB 数据更新导致锁表
查看>>
Mysql Innodb 锁机制
查看>>
MySQL InnoDB中意向锁的作用及原理探
查看>>
MySQL InnoDB事务隔离级别与锁机制深入解析
查看>>
Mysql InnoDB存储引擎 —— 数据页
查看>>
Mysql InnoDB存储引擎中的checkpoint技术
查看>>
Mysql InnoDB存储引擎中缓冲池Buffer Pool、Redo Log、Bin Log、Undo Log、Channge Buffer
查看>>
MySQL InnoDB引擎的锁机制详解
查看>>
Mysql INNODB引擎行锁的3种算法 Record Lock Next-Key Lock Grap Lock
查看>>
mysql InnoDB数据存储引擎 的B+树索引原理
查看>>
mysql innodb通过使用mvcc来实现可重复读
查看>>
mysql insert update 同时执行_MySQL进阶三板斧(三)看清“触发器 (Trigger)”的真实面目...
查看>>
mysql interval显示条件值_MySQL INTERVAL关键字可以使用哪些不同的单位值?
查看>>
Mysql join原理
查看>>
MySQL Join算法与调优白皮书(二)
查看>>
Mysql order by与limit混用陷阱
查看>>
Mysql order by与limit混用陷阱
查看>>