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. android.widget.FrameLayout$LayoutParams cannot be cast to android.widget.LinearLayout$LayoutParams

      http://blog.csdn.net/lilu_leo/article/details/11952717 有时候需要在在代码中设置LayoutParams,自己为一个FrameLayout设置 ...

  2. Java File类读取文件属性

     package myjavademo;import java.io.*; publicclass MyJavaDemo {     public static void main(String[]  ...

  3. DSOframer 无法正常加载的解决方案

    不了解 DSOframer 的朋友,可以先参考文章 DSOframer 的简单介绍和资源整理. 在使用 DSOframer 时,经常会碰到各种奇奇怪怪的问题,最常见的就是控件不能正常加载.大家可以按下 ...

  4. jsonsql

    http://www.trentrichardson.com/jsonsql/ 可以对json数组用sql语法进行操作,主要是查询取指定字段.条件.指定字段排序及获取多少条数据,返回值json. js ...

  5. 02Android用户界面优化之(一)Android Fragment

    一.使用Fragment 1.AndroidManifest.xml文件 <?xml version="1.0" encoding="utf-8"?> ...

  6. 【C#】开发可以可视化操作的windows服务

    使用C#开发自定义windows服务是一件十分简单的事.那么什么时候,我们需要自己开发windows服务呢,就是当我们需要计算机定期或者一直执行我们开发的某些程序的时候.这里我以一个WCF的监听服务为 ...

  7. C#6 冒泡 折半查找 二维数组

    人类思维--计算机逻辑思维 逻辑思维--代码实现 写书法: 描红--临摹--碑贴--自成一体--草 章节复习: 数组:一维,二维,多维 一维:豆角.连续,同一类型. 定义:数据类型[] 数组名=new ...

  8. JS参数使用带参数的方法

    大家都知道,在JS之中,一个变量的生命周期不是以大括号为界限的,所以即使是使用在循环或判断中的变量,外部也可以使用.可如果我们在循环或变量中使用了方法,而且这个方法使用了循环中的变量,那么后面的代码是 ...

  9. juce中的BailOutChecker

    界面库中值得注意的一点就是对象响应事件的时候自身被删除了,那么后续的访问自然就会出问题,所以需要在响应事件之后先添加引用,相关处理之后再查看自身是否已经被删除,如果已经被删除那么就直接退出.juce中 ...

  10. Unknown system variable 'tx_read_only'

    SpringMVC+SpringDataJPA(1.4.2.RELEASE)+hibernate(4.2.7)+mysql6.0的开发环境,mysql-connector要older than5.1. ...