Java应用启动时,可以通过设置verbose参数来输出JVM的gc情况,命令如下:-verbose:gc或者-XX:+PrintGC
在Eclipse中可以通过Run As|Run Configurations|Arguments|VM Arguments进行设置。
使用该命令后输出如下:

 [GC 3375K->1317K(15872K), 0.0047372 secs]
[GC 4973K->3427K(15872K), 0.0084376 secs]
[GC 11340K->8175K(15872K), 0.0027110 secs]
[Full GC 8175K->5127K(15872K), 0.0148359 secs]
[GC 12249K->12249K(23060K), 0.0035303 secs]
[Full GC 12249K->7501K(23060K), 0.0197696 secs]
[GC 18184K->18184K(36944K), 0.0057985 secs]
[Full GC 18184K->11062K(36944K), 0.0245650 secs]
[GC 27086K->27086K(41744K), 0.0073461 secs]
[Full GC 27086K->16403K(41744K), 0.0343230 secs]

箭头(->)前后的数据3375K和1317K分别表示垃圾收集GC前后所有存活对象使用的内存容量,说明有3375K–1317K = 2258K大小的对象被回收,括号内的数据 123584K为堆内存的总容量,收集所需的实际为 0.0120528秒。需要注意的是:GC会暂用CPU时间片,会造成程序短暂的停顿,控制台输出GC信息还可以使用如下命令:
    在JVM的启动参数中加入:

(1)-XX:+PrintGC,输出GC的简要信息

(2)-XX:+PrintGCDetails,输出GC的详细信息:

 [GC[DefNew: 3375K->379K(4928K), 0.0041917 secs] 3375K->1317K(15872K), 0.0042904 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
[GC[DefNew: 4035K->0K(4928K), 0.0088287 secs] 4973K->3427K(15872K), 0.0088957 secs] [Times: user=0.00 sys=0.00, real=0.01 secs]
[GC[DefNew: 3165K->0K(4928K), 0.0026064 secs][Tenured: 8175K->5127K(10944K), 0.0146668 secs] 11340K->5127K(15872K), [Perm : 160K->160K(12288K)], 0.0173788 secs] [Times: user=0.02 sys=0.00, real=0.02 secs]
[GC[DefNew: 0K->0K(4992K), 0.0040182 secs][Tenured: 12249K->7501K(18068K), 0.0179673 secs] 12249K->7501K(23060K), [Perm : 160K->160K(12288K)], 0.0221141 secs] [Times: user=0.03 sys=0.00, real=0.02 secs]
[GC[DefNew: 0K->0K(8192K), 0.0050559 secs][Tenured: 18184K->11062K(28752K), 0.0257729 secs] 18184K->11062K(36944K), [Perm : 160K->160K(12288K)], 0.0309780 secs] [Times: user=0.03 sys=0.00, real=0.03 secs]
[GC[DefNew: 0K->0K(12992K), 0.0076682 secs][Tenured: 27086K->16403K(28752K), 0.0363194 secs] 27086K->16403K(41744K), [Perm : 160K->160K(12288K)], 0.0440790 secs] [Times: user=0.05 sys=0.00, real=0.04 secs]

(3)-XX:+PrintGCTimeStamps,输出GC的时间信息如下:

(4)-XX:+PrintGCApplicationStoppedTime,GC造成的应用暂停的时间

 Total time for which application threads were stopped: 0.0040944 seconds
Total time for which application threads were stopped: 0.0089377 seconds
Total time for which application threads were stopped: 0.0176941 seconds
Total time for which application threads were stopped: 0.0218115 seconds
Total time for which application threads were stopped: 0.0293873 seconds
Total time for which application threads were stopped: 0.0420044 seconds
Total time for which application threads were stopped: 0.0607124 seconds

JVM学习之Eclipse输出GC日志的更多相关文章

  1. JVM学习--开启应用的gc日志功能

    一.开启方法 For Java 1.4, 5, 6, 7, 8 pass this JVM argument to your application: -XX:+PrintGCDetails -XX: ...

  2. JVM 输出 GC 日志导致 JVM 卡住,我 TM 人傻了

    本系列是 我TM人傻了 系列第七期[捂脸],往期精彩回顾: 升级到Spring 5.3.x之后,GC次数急剧增加,我TM人傻了:https://zhuanlan.zhihu.com/p/3970425 ...

  3. JVM调优——之CMS GC日志分析

    最近在学习JVM和GC调优,今天总结下CMS的一些特点和要点,让我们先简单的看下整个堆年轻代和年老代的垃圾收集器组合(以下配合java8完美支持,其他版本可能稍有不同),其中标红线的则是我们今天要着重 ...

  4. Eclipse打印GC日志

    一.生成gc.log 第一步:右键项目或文件——Run As——Run Configurations. 第二步:点击Arguments,在VM arguments中填写-Xloggc:F:/gc.lo ...

  5. JVM命令行选项及GC日志

    转:http://blog.csdn.net/q291611265/article/details/48028189 一.设置参数 在使用eclipse编译器的时候,可以采用以下的运行方式来设置虚拟机 ...

  6. JVM学习之JVM1.6 GC详解

    转自:http://www.cnblogs.com/ggjucheng/p/3977384.html,多谢分享 前言  JVM GC是JVM的内存回收算法,调整JVM GC(Garbage Colle ...

  7. Tomcat输出保存JVM GC日志文件

    当系统出现问题时,分析java虚拟机GC日志可以帮助我们定位问题,一般来说, 我们可以通过制定JVM参数使tomcat保存GC日志文件,具体实现如下: Windows下: 找到tomcat的解压目录, ...

  8. JVM小册(1)------jstat和Parallel GC日志

    JVM小册(1)------jstat和Parallel GC日志 一. 背景 在生产环境中,有时候会遇到OOM的情况,抛开Arthas 等比较成熟的工具以外,我们可以使用java 提供的jatat和 ...

  9. JVM学习——垃圾回收GC(学习过程)

    JVM学习-垃圾回收(GC) 2020年02月19日06:03:56,开始学习垃圾回收,学习资料来源(张龙老师的JVM课程) JVM内存数据区域知识复习 学习垃圾回收之前,要对JVM内部的内存区域有详 ...

随机推荐

  1. 从一个非开发人员转行silverlight满一年的工作总结(第一次发帖)

    自2013年3月进入公司到现在已整整一年.这一年,让我从一个大学毕业就去参军并且专业还不对口的大学生步入了软件开发这个高门槛行业.说实话,我真的很庆幸,庆幸遇到了两位赏识自己的领导从很多专业对口.能力 ...

  2. [翻译]理解 ASP.NET 5

    **原文:http://docs.asp.net/en/latest/conceptual-overview/understanding-aspnet5-apps.html** 英文捉急,花了挺多时间 ...

  3. beforefieldinit释义

    首先让我们认识什么是,当字段被标记为beforefieldinit类型时,该字段初始化可以发生在任何时候任何字段被引用之前.这句话听起了有点别扭,接下来让我们通过具体的例子介绍. /// <su ...

  4. jvm如何知道那些对象需要回收

    1 首先的问题是:jvm如何知道那些对象需要回收 ? 目前有两种算法 引用计数法 每个对象上都有一个引用计数,对象每被引用一次,引用计数器就+1,对象引用被释放,引用计数器-1,直到对象的引用计数为0 ...

  5. HDU 1032 The 3n + 1 problem

    还以为要递归推一推的 结果暴力就过了 要注意 i,j 大小 #include <iostream> using namespace std; int a,b; long long cnt, ...

  6. HDU 1045(Fire Net)题解

    以防万一,题目原文和链接均附在文末.那么先是题目分析: [一句话题意] 给定大小的棋盘中部分格子存在可以阻止互相攻击的墙,问棋盘中可以放置最多多少个可以横纵攻击炮塔. [题目分析] 这题本来在搜索专题 ...

  7. struts2笔记09-动态方法调用

    1.action配置 <action name="testDynamic" class="com.test.actions.TestAction"> ...

  8. CPrimer Plus第12章 存储类、链接和内存管理随笔

    被static修饰的属于内部链接,不可被外部程序文件所使用一般而言,全局变量(文件作用域变量)具有静态存储期,局部变量(代码块作用域变量)具有自动存储期寄存器变量不能使用地址运算符因为被static修 ...

  9. 【Chromium中文文档】OS X 沙箱设计

    OS X 沙箱设计 转载请注明出处:https://ahangchen.gitbooks.io/chromium_doc_zh/content/zh//General_Architecture/OSX ...

  10. VC 窗口出现白屏闪烁的解决办法

    处理一下窗口的WM_ERASEBKGND消息即可. 在messagemap里添加ON_WM_ERASEBKGND() 在窗口头文件里添加 afx_msg BOOL OnEraseBkgnd(CDC* ...