java 查看gc_Java GC日志查看

Java GC类型

Java中的GC有哪几种类型?

参数

描述

UseSerialGC

虚拟机运行在Client模式的默认值,打开此开关参数后,

使用Serial+Serial Old收集器组合进行垃圾收集。

UseParNewGC

打开此开关参数后,使用ParNew+Serial Old收集器组合进行垃圾收集。

UseConcMarkSweepGC

打开此开关参数后,使用ParNew+CMS+Serial Old收集器组合进行垃圾收集。Serial Old作为CMS收集器出现Concurrent Mode Failure的备用垃圾收集器。

UseParallelGC

虚拟机运行在Server模式的默认值,打开此开关参数后,使用Parallel Scavenge+Serial Old收集器组合进行垃圾收集。

UseParallelOldGC

打开此开关参数后,使用Parallel Scavenge+Parallel Old收集器组合进行垃圾收集。

在Java程序启动完成后,通过jps观察进程来查询到当前运行的java进程,使用

jinfo –flag UseSerialGC 进程

的方式可以定位其使用的gc策略,因为这些参数都是boolean型的常量,如果使用该种gc策略会出现+号,否则-号。

使用-XX:+上述GC策略可以开启对应的GC策略。

GC日志查看

可以通过在java命令种加入参数来指定对应的gc类型,打印gc日志信息并输出至文件等策略。

GC的日志是以替换的方式(>)写入的,而不是追加(>>),如果下次写入到同一个文件中的话,以前的GC内容会被清空。

对应的参数列表

-XX:+PrintGC 输出GC日志

-XX:+PrintGCDetails 输出GC的详细日志

-XX:+PrintGCTimeStamps 输出GC的时间戳(以基准时间的形式)

-XX:+PrintGCDateStamps 输出GC的时间戳(以日期的形式,如 2013-05-04T21:53:59.234+0800)

-XX:+PrintHeapAtGC 在进行GC的前后打印出堆的信息

-Xloggc:../logs/gc.log 日志文件的输出路径

这里使用如下的参数来进行日志的打印:

-XX:+PrintGCDateStamps -XX:+PrintGCDetails -Xloggc:./gclogs

对于新生代回收的一行日志,其基本内容如下:

2014-07-18T16:02:17.606+0800: 611.633: [GC 611.633: [DefNew: 843458K->2K(948864K), 0.0059180 secs] 2186589K->1343132K(3057292K), 0.0059490 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]

其含义大概如下:

2014-07-18T16:02:17.606+0800(当前时间戳): 611.633(时间戳): [GC(表示Young GC) 611.633: [DefNew(单线程Serial年轻代GC): 843458K(年轻代垃圾回收前的大小)->2K(年轻代回收后的大小)(948864K(年轻代总大小)), 0.0059180 secs(本次回收的时间)] 2186589K(整个堆回收前的大小)->1343132K(整个堆回收后的大小)(3057292K(堆总大小)), 0.0059490 secs(回收时间)] [Times: user=0.00(用户耗时) sys=0.00(系统耗时), real=0.00 secs(实际耗时)]

老年代回收的日志如下:

2014-07-18T16:19:16.794+0800: 1630.821: [GC 1630.821: [DefNew: 1005567K->111679K(1005568K), 0.9152360 secs]1631.736: [Tenured:

2573912K->1340650K(2574068K), 1.8511050 secs] 3122548K->1340650K(3579636K), [Perm : 17882K->17882K(21248K)], 2.7854350 secs] [Times: user=2.57 sys=0.22, real=2.79 secs]

gc日志中的最后貌似是系统运行完成前的快照:

Heap

def new generation total 1005568K, used 111158K [0x00000006fae00000, 0x000000073f110000, 0x0000000750350000)

eden space 893888K, 12% used [0x00000006fae00000, 0x0000000701710e90, 0x00000007316f0000)

from space 111680K, 3% used [0x0000000738400000, 0x000000073877c9b0, 0x000000073f110000)

to space 111680K, 0% used [0x00000007316f0000, 0x00000007316f0000, 0x0000000738400000)

tenured generation total 2234420K, used 1347671K [0x0000000750350000, 0x00000007d895d000, 0x00000007fae00000)

the space 2234420K, 60% used [0x0000000750350000, 0x00000007a2765cb8, 0x00000007a2765e00, 0x00000007d895d000)

compacting perm gen total 21248K, used 17994K [0x00000007fae00000, 0x00000007fc2c0000, 0x0000000800000000)

the space 21248K, 84% used [0x00000007fae00000, 0x00000007fbf92a50, 0x00000007fbf92c00, 0x00000007fc2c0000)

No shared spaces configured.

GC日志的离线分析

可以使用一些离线的工具来对GC日志进行分析,比如sun的,gcviewer(),这些都是开源的工具,用户可以直接通过版本控制工具下载其源码,进行离线分析。

下面就已gcviewer为例,简要分析一下gc日志的离线分析,gcviewer源代码工程是maven结构的,可以直接用maven进行package,这里编译的是1.34版本,本版本的快照已经上传至附件中。

需要说明的是,gcviewer支持多种参数生成的gc日志,直接通过java –jar的方式运行,加载生成的gc日志即可:

20a0b5c5b29998a7c83de0ddda483c01.png

已标记关键词 清除标记
<p style="color: #676767; font-size: 14px; background-color: #ffffff;"><strong><span style="color: #008781; font-size: 16px;">为什么要学JVM</span></strong></p> <p style="color: #676767; background-color: #ffffff;"><span style="font-size: 14px;">JVM是JAVA的老祖宗,一切JAVA代码都运行在JVM之上,只有深入理解和掌握虚拟机才能写出更强大的代码。</span></p> <p style="color: #676767; background-color: #ffffff;"><span style="font-size: 14px;">JVM是高级程序员的必备技能,是程序员进阶,拿高薪的必备技能。</span></p> <p style="color: #676767; background-color: #ffffff;"><span style="font-size: 14px;">JVM是各大互联网公司笔试、面试的重中之重,据统计头部的10家互利网公司,均将JVM作为笔试面试内容。</span></p> <p style="color: #676767; background-color: #ffffff;"><span style="font-size: 14px;">JVM内容庞大、并且复杂难学,通过视频学习是最佳的掌握手段。</span></p> <p style="color: #676767; background-color: #ffffff;"><span style="font-size: 14px;">JVM的字节码、垃圾回收、性能调优、故障排除、在线诊断都是高级程序员的必备技能。</span></p> <p style="color: #676767; font-size: 14px; background-color: #ffffff;"><strong><span style="color: #008781; font-size: 16px;">课程介绍</span></strong></p> <p style="color: #676767; font-size: 14px; background-color: #ffffff;">本课程总计102课时,从什么是JDK讲起,绝对的0基础入门。</p> <p style="color: #676767; font-size: 14px; background-color: #ffffff;">课程总计分为理论篇和实战篇两个大部分,绝对是全网最详细的JAVA虚拟机视频教程。</p> <p style="color: #676767; font-size: 14px; background-color: #ffffff;">课程涵盖JVM基础、字节码逐项解析、类加载器、内存结构、回收算法、垃圾收集器等理论章节。</p> <p style="color: #676767; font-size: 14px; background-color: #ffffff;">也包含GC日志详解、垃圾手机、性能调优、故障排除、线程死锁、内存溢出、CPU飙升、快照分析全部囊括。实战章节。</p> <p style="color: #676767; font-size: 14px; background-color: #ffffff;">特别包含阿里巴巴在线诊断神器Arthas教程。</p> <p style="color: #676767; font-size: 14px; background-color: #ffffff;">jcmd、jinfo、jstap、jmap、jconsole、jvisualvm、jstat、jmx、jprofile、jps全部工具的使用一网大金</p> <p style="color: #676767; font-size: 14px; background-color: #ffffff;"><strong><span style="color: #008781; font-size: 16px;">课程资料</span></strong></p> <p style="color: #676767; background-color: #ffffff;"><span style="font-size: 14px;">课程附带配套2个项目源码</span></p> <p style="color: #676767; background-color: #ffffff;"><span style="font-size: 14px;">159页高清PDF理论篇课件一份</span></p> <p style="color: #676767; background-color: #ffffff;"><span style="font-size: 14px;">89页高清PDF实战篇课件一份</span></p> <p style="color: #676767; background-color: #ffffff;"><span style="font-size: 14px;">Unsafe源码PDF课件一份</span></p> <p style="color: #676767; background-color: #ffffff;"><span style="font-size: 14px;">字节码可视化解析工具</span><span style="font-size: 14px;">一份</span></p> <p style="color: #676767; background-color: #ffffff;"><span style="font-size: 14px;">GC日志可视化分析工具</span><span style="font-size: 14px;">一份</span></p> <p style="color: #676767; background-color: #ffffff;"><span style="font-size: 14px;">命令行工具cmder</span><span style="font-size: 14px;">一份</span></p> <p style="color: #676767; background-color: #ffffff;"><span style="font-size: 14px;">class_stats字段说明PDF文件</span><span style="font-size: 14px;">一份</span></p> <p style="color: #676767; background-color: #ffffff;"><span style="font-size: 14px;">jcmd Thread.print解析说明文件</span><span style="font-size: 14px;">一份</span></p> <p style="color: #676767; background-color: #ffffff;"><span style="font-size: 14px;">JProfiler内存分析工具说明文件</span><span style="font-size: 14px;">一份</span></p> <p style="color: #676767; font-size: 14px; background-color: #ffffff;"><strong><span style="color: #008781; font-size: 16px;">学习方法</span></strong></p> <p style="color: #676767; font-size: 14px; background-color: #ffffff;">理论篇部分推荐每天学习2课时,可以在公交地铁上用手机进行学习。</p> <p style="color: #676767; font-size: 14px; background-color: #ffffff;">实战篇部分推荐对照视频,使用配套源码,一遍联系一遍学习。</p> <p style="color: #676767; font-size: 14px; background-color: #ffffff;">课程内容较多,不要一次性学太多,而是要循序渐进,坚持学习。</p> <p><img src="https://img-bss.csdnimg.cn/202103270814203968.jpg" alt="" /></p> <p><img src="https://img-bss.csdnimg.cn/202103270814406060.jpg" alt="" /></p> <p><img src="https://img-bss.csdnimg.cn/202103270814503536.jpg" alt="" /></p> <p><img src="https://img-bss.csdnimg.cn/202103270814594202.jpg" alt="" /></p> <p><img src="https://img-bss.csdnimg.cn/202103270815088045.jpg" alt="" /></p> <p><img src="https://img-bss.csdnimg.cn/202103270815261029.jpg" alt="" /></p> <p><img src="https://img-bss.csdnimg.cn/202103270815411575.jpg" alt="" /></p> <p><img src="https://img-bss.csdnimg.cn/202103270815499881.jpg" alt="" /></p> <p><img src="https://img-bss.csdnimg.cn/202103270816008070.jpg" alt="" /></p> <p><img src="https://img-bss.csdnimg.cn/202103270816139898.jpg" alt="" /></p>
表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
程序员的必经之路! 【限时优惠】 现在下单,还享四重好礼: 1、教学课件免费下载 2、课程案例代码免费下载 3、专属VIP学员群免费答疑 4、下单还送800元编程大礼包 【超实用课程内容】  根据《2019-2020年中国开发者调查报告》显示,超83%的开发者都在使用MySQL数据库。使用量大同时,掌握MySQL早已是运维、DBA的必备技能,甚至部分IT开发岗位也要求对数据库使用和原理有深入的了解和掌握。 学习编程,你可能会犹豫选择 C++ 还是 Java;入门数据科学,你可能会纠结于选择 Python 还是 R;但无论如何, MySQL 都是 IT 从业人员不可或缺的技能!   套餐中一共包含2门MySQL数据库必学的核心课程(共98课时)   课程1:《MySQL数据库从入门到实战应用》   课程2:《高性能MySQL实战课》   【哪些人适合学习这门课程?】  1)平时只接触了语言基础,并未学习任何数据库知识的人;  2)对MySQL掌握程度薄弱的人,课程可以让你更好发挥MySQL最佳性能; 3)想修炼更好的MySQL内功,工作中遇到高并发场景可以游刃有余; 4)被面试官打破沙锅问到底的问题问到怀疑人生的应聘者。 【课程主要讲哪些内容?】 课程一:《MySQL数据库从入门到实战应用》 主要从基础篇,SQL语言篇、MySQL进阶篇三个角度展开讲解,帮助大家更加高效的管理MySQL数据库。 课程二:《高性能MySQL实战课》主要从高可用篇、MySQL8.0新特性篇,性能优化篇,面试篇四个角度展开讲解,帮助大家发挥MySQL的最佳性能的优化方法,掌握如何处理海量业务数据和高并发请求 【你能收获到什么?】  1.基础再提高,针对MySQL核心知识点学透,用对; 2.能力再提高,日常工作中的代码换新貌,不怕问题; 3.面试再加分,巴不得面试官打破沙锅问到底,竞争力MAX。 【课程如何观看?】  1、登录CSDN学院 APP 在我的课程中进行学习; 2、移动端:CSDN 学院APP(注意不是CSDN APP哦)  本课程为录播课,课程永久有效观看时长 【资料开放】 课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化。  下载方式:电脑登录课程观看页面,点击右侧课件,可进行课程资料的打包下载。
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页