当前位置: 首页 > article >正文

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

这里写自定义目录标题

    • **1. 使用 `jcmd` 工具**
      • **步骤:**
    • **2. 使用 `jinfo` 工具**
      • **步骤:**
    • **3. 使用 Java 性能监控工具**
      • **3.1 使用 VisualVM**
      • **3.2 使用 Java Mission Control (JMC)**
    • **4. 使用运行时 Java 命令打印 GC 信息**
    • **5. 使用 `jstat` 工具查看 GC 活动**
    • **总结**
      • **推荐方法**:

要根据进程 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 附带的,不需要额外安装,非常适合日常排查和调试使用。


http://www.kler.cn/a/510397.html

相关文章:

  • 使用傅里叶变换进行图像边缘检测
  • 用户中心项目教程(四)---Vue脚手架完成前端初始化
  • Android系统开发(一):AOSP 架构全解析:开源拥抱安卓未来
  • 【SPIE出版|EI、Scopus双检索】2025年绿色能源与环境系统国际学术会议(GEES 2025)
  • macOS Sequoia 15.3 beta3(24D5055b)发布,附黑、白苹果镜像下载地址
  • Java 视频处理:基于 MD5 校验秒传及 ffmpeg 切片合并的实现
  • 论文阅读:CosAE Learnable Fourier Series for Image Restoration
  • 大数据面试——引入
  • 【NextJS】PostgreSQL 遇上 Prisma ORM
  • 单链表的删除实战
  • NEC纪实 :2024全国机器人大赛 Robocon 常州工学院团队首战国三
  • QT笔记- Qt6.8.1 Android编程 添加AndroidManifest.xml文件以支持修改权限
  • VB.net实战(VSTO):解决WPS Ribbon图标灰色背景
  • 简单日志宏实现(C++)
  • Invicti-Professional-V25.1
  • MATLAB基础应用精讲-【数模应用】基于粒子群算法的风光储微电网经济运行优化调度(附MATLAB代码实现)
  • 《自动驾驶与机器人中的SLAM技术》ch8:基于预积分和图优化的紧耦合 LIO 系统
  • Qt Desiogn生成的ui文件转化为h文件
  • kubernetes简介
  • LLM - 大模型 ScallingLaws 的 CLM 和 MLM 中不同系数(PLM) 教程(2)
  • 图论DFS:黑红树
  • Python库之PyAutoGUI安装以及使用方法
  • 使用 Hadoop 实现大数据的高效存储与查询
  • 题海拾贝:力扣 反转链表
  • Source insight快捷导入工程流程 Source insight导入MDK工程文件
  • C# 委托和事件(Lambda表达式)