自学内容网 自学内容网

根据进程id查看服务使用的垃圾收集器

要根据进程 ID(PID)查看服务使用的垃圾收集器,可以通过以下几种方式实现:


1. 使用 jcmd 工具

jcmd 是 JDK 自带的工具,可以用于查询运行中的 Java 进程的信息,包括垃圾收集器的详细配置。

步骤:

  1. 查找目标进程 ID
    使用 jps 或其他工具找到目标 Java 进程的 PID:

    jps -l
    
  2. 查询垃圾收集器信息
    使用 jcmd 命令查看 JVM 的 GC 配置:

    jcmd <PID> VM.flags
    

    示例输出:

    -XX:+UseCompressedOops -XX:+UseG1GC -XX:InitialHeapSize=268435456
    
  3. 解释结果
    根据输出的 -XX 参数确定使用的垃圾收集器:

    • -XX:+UseSerialGC:串行垃圾收集器。
    • -XX:+UseParallelGC:并行垃圾收集器。
    • -XX:+UseG1GC:G1 垃圾收集器。
    • -XX:+UseConcMarkSweepGC:CMS 垃圾收集器(JDK 14 开始已废弃)。
    • -XX:+UseZGC:ZGC。
    • -XX:+UseShenandoahGC:Shenandoah GC。

2. 使用 jinfo 工具

jinfo 是另一个 JDK 自带的工具,可以直接查看 JVM 的启动参数,包括垃圾收集器的配置。

步骤:

  1. 查看 JVM 启动参数

    jinfo -flags <PID>
    

    示例输出:

    -XX:+UseCompressedOops -XX:+UseG1GC
    
  2. 解释结果
    根据 -XX:+Use*GC 参数识别使用的垃圾收集器(同上)。


3. 使用 Java 性能监控工具

某些工具可以直接提供 JVM 的垃圾收集器信息,例如:

3.1 使用 VisualVM

  1. 启动 VisualVM(JDK 附带,或从官方网站下载)。
  2. 连接到目标 Java 进程。
  3. 在 JVM 的概览页面中,查看垃圾收集器的名称。

3.2 使用 Java Mission Control (JMC)

  1. 启动 JMC 并连接到目标进程。
  2. 查看 JVM 的配置,其中包含垃圾收集器的详细信息。

4. 使用运行时 Java 命令打印 GC 信息

在服务启动时,可以通过以下方式打印垃圾收集器的信息:

  1. 添加 JVM 参数:

    -XX:+PrintCommandLineFlags
    
  2. 启动服务后,查看标准输出日志,获取垃圾收集器配置。


5. 使用 jstat 工具查看 GC 活动

虽然 jstat 不直接显示垃圾收集器的类型,但可以通过观察 GC 活动推测垃圾收集器的类型:

jstat -gc <PID> 1000
  • 如果观察到 YGCFGC,可能是使用了 CMS 或 Parallel GC。
  • 如果是 G1 GC,则会显示 G1 特有的统计信息。

总结

推荐方法

  • 快捷jcmd <PID> VM.flags
  • 详细jinfo -flags <PID> 或 VisualVM
  • 动态监控jstat -gc <PID> 或 JVM 日志参数

这些工具都是 JDK 附带的,不需要额外安装,非常适合日常排查和调试使用。


原文地址:https://blog.csdn.net/hc1285653662/article/details/145249452

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!