You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot应用配置App Insights采集JMX指标时对象名查找失败

解决App Insights JMX指标追踪的GC对象名找不到问题

问题本质

错误提示Cannot find object name 'java.lang:type=GarbageCollector,name=PS MarkSweep',核心原因是你的JVM环境中不存在这个名称的GC收集器MBean。不同JDK版本、不同GC收集器(如Parallel、G1、ZGC等)对应的JMX对象名存在差异,PS MarkSweep是Parallel Old收集器的专属名称,仅在启用Parallel GC的JVM中存在。

解决步骤

1. 确认当前JVM实际存在的GC收集器JMX对象名

用以下任意一种方式查看:

  • jconsole可视化工具:
    运行jconsole命令,连接到你的Spring Boot应用进程,切换到MBean标签,展开java.lang → GarbageCollector,查看右侧面板的ObjectName字段,记录实际存在的GC收集器名称。
  • jcmd命令行工具:
    先通过jps命令获取应用进程PID,再执行:
    jcmd <你的应用PID> MBean.query java.lang:type=GarbageCollector
    
    命令会输出所有GC相关的JMX对象名,例如:
    java.lang:type=GarbageCollector,name=G1 Old Generation
    java.lang:type=GarbageCollector,name=G1 Young Generation
    

2. 修改applicationinsights.json配置

将配置中jmxMetrics里的GC相关objectName替换为你实际查到的名称。

示例(假设使用G1GC):

"jmxMetrics":[
  {
    "name":"TEMP - GC Thread Count",
    "objectName":"java.lang:type=GarbageCollector,name=G1 Old Generation",
    "attribute":"LastGcInfo.GcThreadCount"
  },
  {
    "name":"TEMP - GC Collection Count",
    "objectName":"java.lang:type=GarbageCollector,name=G1 Old Generation",
    "attribute":"CollectionCount"
  },
  {
    "name":"TEMP - Thread Count",
    "objectName":"java.lang:type=Threading",
    "attribute":"ThreadCount"
  }
]

3. 验证属性可用性

部分GC收集器可能不支持LastGcInfo.GcThreadCount属性,如果修改后仍报错,可以尝试移除该指标,或替换为GC收集器支持的其他属性(可通过jconsole查看MBean的属性列表确认)。

内容的提问来源于stack exchange,提问作者hell_storm2004

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 14:10:16