使用JVM常用GC日志打印参数

作者:NetWhite 时间:2021-09-06 17:36:41 

JVM常用GC日志打印参数

1. PrintGC

最简单的GC参数。

启用配置:-XX:+PrintGC

日志如下:

使用JVM常用GC日志打印参数

根据上面红色方框内的数字1、2、3、4、5说明,1是GC类型,GC:minor GC(young gc),Full GC:major GC,2是GC前堆内存使用量,3是GC后堆内存使用量,4是堆内存总量,5是本次GC耗时

2. PrintGCDetails

打印GC的详细信息

启用配置:-XX:+PrintGCDetails

日志如下:

使用JVM常用GC日志打印参数

不同的垃圾回收器,GC日志(表示年代的词)可能会不一样, 和第一节中差不多,->前的是GC前堆内存使用量,->后面是GC后堆内存使用量,括号内是堆内存总量。

对于这个日志,PSYoungGen:年轻代,ParOldGen:老年代,PSPermGen:持久代(方法区)

Times: user表示用户态CPU耗时,sys表示系统CPU耗时,real表示GC实际耗时

3. PrintGCTimeStamps

GC时,打印进程启动到现在经历的时间

启用配置:-XX:+PrintGCTimeStamps

日志如下:

使用JVM常用GC日志打印参数

红色方框内的时间,表示进程启动到现在经历的时间

该参数需要配合其它GC日志打印参数一起使用,如下

使用JVM常用GC日志打印参数

4. PrintGCApplicationStoppedTime

打印GC时,应用停顿时间

启用配置:-XX:+PrintGCApplicationStoppedTime

日志如下:

使用JVM常用GC日志打印参数

5. PrintGCApplicationConcurrentTime

GC时打印应用执行时间

启用配置:-XX:+PrintGCApplicationConcurrentTime

日志如下:

使用JVM常用GC日志打印参数

6. PrintHeapAtGC

每次GC前后打印堆信息

启用配置:-XX:+PrintHeapAtGC

日志如下:

使用JVM常用GC日志打印参数

p.s. 上面几个参数可同时配合使用,同时使用PrintGC和PrintGCDetails时,打印的详细信息。

GC日志信息默认是打印到控制台,如果需要输出到文件,可以使用参数:-Xloggc:gc.log,gc.log是要输出的日志文件,路径为应用启动路径的相对路径下,也可以使用绝对路径。

JVM打印GC日志到文件


package gc;
public class GcTest {
private static final int _1MB= 1024 * 1024;
public static void main(String[] args) {
 byte[] a1, a2, a3, a4;
 a1 = new byte[2 * _1MB];
 a2 = new byte[2 * _1MB];
 a3 = new byte[2 * _1MB];
 a4 = new byte[2 * _1MB];
}
}

打印GC日志

D:\study\workspace\jvm\src>java -Xms20M -Xmx20M -Xmn10M -XX:Survivor

Ratio=8 -XX:+PrintGCDetails -Xloggc:d:\gc.log gc.GcTest

来源:https://blog.csdn.net/x763795151/article/details/89981686

标签:JVM,GC,日志,打印参数
0
投稿

猜你喜欢

  • Android开发技巧之在a标签或TextView控件中单击链接弹出Activity(自定义动作)

    2023-12-26 09:11:39
  • SpringMVC @NotNull校验不生效的解决方案

    2021-07-19 23:20:07
  • 设计模式系列之组合模式及其在JDK和MyBatis源码中的运用详解

    2022-12-27 12:56:57
  • 深入探讨Java多线程中的volatile变量

    2023-08-31 02:32:18
  • SpringBoot自动配置原理详解

    2023-08-19 09:25:55
  • java文件上传下载代码实例

    2023-11-10 05:06:14
  • intellij idea如何将web项目打成war包的实现

    2023-05-27 23:12:27
  • Java利用MessageFormat实现短信模板的匹配

    2023-02-19 11:41:54
  • Android编程设计模式之原型模式实例详解

    2021-09-14 02:20:47
  • Java 实现常见的非对称加密算法

    2023-11-27 18:51:03
  • Android—基于微信开放平台v3SDK开发(微信支付填坑)

    2023-05-20 09:04:02
  • Android实现微信登录的示例代码

    2022-04-04 15:55:56
  • Jenkins使用Gradle编译Android项目详解

    2021-12-30 22:26:30
  • Java 超详细讲解类的定义方式和对象的实例化

    2021-09-11 17:38:29
  • Java使用GZIP压缩导致HTTP请求返回乱码问题解决

    2022-04-12 07:31:09
  • JVM内存模型/内存空间:运行时数据区

    2023-01-14 13:12:23
  • c++传递函数指针和bind的示例

    2021-06-18 18:34:38
  • 一文带你了解如何正确使用Java中的字符串常量池

    2022-07-13 01:35:30
  • Java实现企业发放的奖金根据利润提成问题

    2023-02-11 06:52:33
  • Java Web开发过程中登陆模块的验证码的实现方式总结

    2022-01-29 19:33:16
  • asp之家 软件编程 m.aspxhome.com