JDK 9 更加方便友好的 JVM 日志记录(JVM Logging)

JVM 日志记录长期以来一直是 JDK 的一部分。它可以成为执行根本原因分析和找出性能怪癖的绝佳工具。在 JDK 9 中,对 JVM 日志记录的处理方式进行了一些更改,使其更加用户友好和可配置。让我们看看如何使用本文中的 VM 日志记录。

启用和配置日志记录

-Xlog通过添加到您的java命令,可以在最基本的级别启用 VM 日志记录。这将启用具有默认配置的 VM 日志记录:

-Xlog:all=info:stdout:uptime,levels,tags

以上将在信息级别为所有不同类别打开 JVM 日志记录。它会将 JVM 日志打印到标准输出,包括 JVM 的正常运行时间、日志语句的级别以及与之关联的标签。以下是日志语句的示例:

[1.043s][info][methodhandles           ] lookup_polymorphic_method => intrinsic {method} {0x000000010a38c880}

在大多数情况下,默认的 JVM 日志记录会过于嘈杂而无用。幸运的是,可以配置 JVM 日志记录以满足许多需求。

配置标签

启用 JVM 日志记录时,开发人员通常会研究特定问题。JVM 日志记录可以配置为仅生成与特定类别匹配的日志,例如:垃圾收集 ( gc)、即时编译器 ( jit)、CPU 使用率 ( cpu) 等等。将日志记录限制在特定类别有助于减少噪音并让您专注于关注的领域:

-xlog:gc,heap

上面的示例将日志输出限制为仅包含gcheap标记的日志语句。或者,以下示例可用于打印包含gcAND的日志head,并且*可以添加,以便打印包含gcheap标签的任何日志:

-xlog:gc+heap
-xlog:gc*,heap*

标签可以设置不同级别的日志记录;; 例如,如果我想为but for记录日志,它看起来像这样:off, trace, debug, info, warning, error``debug``heap``error``gc

-Xlog:'gc*=error,heap*=debug'

配置输出位置

默认情况下,JVM 日志将打印到stdout; 然而,这可能不是 JVM 日志发送到的理想位置;在许多情况下,最好将 JVM 日志记录写入单独的文件,可以这样做:

-Xlog:'gc*,heap*':vm-logging.log

-Xlog在一个命令中有多个实例也是有效的java,这对于根据类型将 JVM 日志写入不同的位置很有用。在下面的示例中,gc日志语句被写入,gc.logheap日志语句被写入heap.log.

-Xlog:'gc*':gc.log -Xlog:`heap*`:heap.log

降低性能开销

JVM 日志记录可能会给 Java 应用程序带来不小的开销。为了帮助解决这个问题,请考虑启用异步日志记录-Xlog:async,它将日志语句写入内存缓冲区,该缓冲区将被定期刷新。缓冲区大小可以配置为-XX:AsyncLogBufferSize=<bytes>。就像在这个例子中一样:

-Xlog:'gc*=trace':gc-trace.log -Xlog:async -XX:AsyncLogBufferSize=102400

在正在运行的 JVM 上配置日志记录

JVM 日志记录可以在 JVM 上使用jcmd和进行配置VM.log。使用命令配置 JVM 日志记录时可用的所有配置选项java都可用,但提供选项是通过outputoutput_optionswhatdecorators参数完成的,如下例所示:

jcmd <pid> VM.log output="file=heap.log" output_options="filecount=5,filesize=10m" what="heap=info" decorators="time,level"

附加阅读

JEP 158:统一 JVM 日志记录

JEP 271:统一 GC 日志记录

使用 JVM 统一日志记录框架启用日志记录

使用 jcmd 示例配置日志记录

打印输出 -Xlog:help


<<<<<<<<<<<< [完] >>>>>>>>>>>>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值