当前位置: 首页 > 知识库问答 >
问题:

使用拖放向导指标获取 JMX 值-Jvm

公羊宗清
2023-03-14

我尝试使用dropWizard库获取JVM度量值(MemoryUsageGaugeSet、GarbageCollectionUsageGaigeSet)

 <dependency>
    <groupId>io.dropwizard.metrics</groupId>
    <artifactId>metrics-jvm</artifactId>
    <version>3.1.2</version>
 </dependency>

代码实现。

  public static void main(String[] args ){
  MemoryUsageGaugeSet memory = new MemoryUsageGaugeSet();
  Map<String, Metric> memoryMap = memory.getMetrics();
  system.out.println( memoryMap);}

我得到的结果是

{heap.committed=com.codahale.metrics.jvm.MemoryUsageGaugeSet$8@d16011, non-heap.used=com.codahale.metrics.jvm.MemoryUsageGaugeSet$11@cc09904, pools.Code-Cache.used=com.codahale.metrics.jvm.MemoryUsageGaugeSet$17@748032cc, pools.Code-Cache.committed=com.codahale.metrics.jvm.MemoryUsageGaugeSet$18@2b6e0423, heap.used=com.codahale.metrics.jvm.MemoryUsageGaugeSet$6@203428b7, pools.PS-Old-Gen.init=com.codahale.metrics.jvm.MemoryUsageGaugeSet$19@28b49d0c, total.committed=com.codahale.metrics.jvm.MemoryUsageGaugeSet$4@5dd7cc84, pools.PS-Old-Gen.max=com.codahale.metrics.jvm.MemoryUsageGaugeSet$16@6438401, total.init=com.codahale.metrics.jvm.MemoryUsageGaugeSet$1@7b365ee, non-heap.max=com.codahale.metrics.jvm.MemoryUsageGaugeSet$12@be3d4e9, pools.PS-Eden-Space.init=com.codahale.metrics.jvm.MemoryUsageGaugeSet$19@68339afd, pools.压缩类空间.used=com.codahale.metrics.jvm.MemoryUsageGaugeSet$17@724a6876, pools.Metaspace.usage=com.codahale.metrics.jvm.MemoryUsageGaugeSet$15@6ecaffc4, pools.Metaspace.max=com.codahale.metrics.jvm.MemoryUsageGaugeSet$16@7b1b3a68, pools.PS-Eden-Space.committed=com.codahale.metrics.jvm.MemoryUsageGaugeSet$18@f8ba384, pools.PS-Eden-Space.max=com.codahale.metrics.jvm.MemoryUsageGaugeSet$16@2e2373db, pools.压缩类空间.usage=com.codahale.metrics.jvm.MemoryUsageGaugeSet$15@17ae8d04, 堆.usage=com.codahale.metrics.jvm.MemoryUsageGaugeSet$9@35c43de3, pools.PS-Eden-Space.usage=com.codahale.metrics.jvm.MemoryUsageGaugeSet$15@67013f5c, pools.PS-Survivor-Space.max=com.codahale.metrics.jvm.MemoryUsageGaugeSet$16@520935cc, pools.Code-Cache.max=com.codahale.metrics.jvm.MemoryUsageGaugeSet$16@31ac5424, pools.Compress-Class-Space.init=com.codahale.metrics.jvm.MemoryUsageGaugeSet$19@25135cd7, pools.Metaspace.init=com.codahale.metrics.jvm.MemoryUsageGaugeSet$19@4b066cf6, pools.PS-Surviver-Space.usage=com.codahale.metrics.jvm.MemoryUsageGaugeSet$15@50ba970f, pools.PS-Old-Gen.usage=com.codahale.metrics.jvm.MemoryUsageGaugeSet$15@3e4e448, pools.Code-Cache.usage=com.codahale.metrics.jvm.MemoryUsageGaugeSet$15@3c2ef507, pools.PS-Survivor-Space.init=com.codahale.metrics.jvm.MemoryUsageGaugeSet$19@44374fa8, total.used=com.codahale.metrics.jvm.MemoryUsageGaugeSet$2@40b1aace, pools.Code-Cache.init=com.codahale.metrics.jvm.MemoryUsageGaugeSet$19@6453d034, pools.PS-Old-Gen.committed=com.codahale.metrics.jvm.MemoryUsageGaugeSet$18@2f9e8774, 堆.init=com.codahale.metrics.jvm.MemoryUsageGaugeSet$5@512ad720, non-heap.committed=com.codahale.metrics.jvm.MemoryUsageGaugeSet$13@1c80e011, pools.Compressed-Class-Space.committed=com.codahale.metrics.jvm.MemoryUsageGaugeSet$18@662841c5, non-heap.init=com.codahale.metrics.jvm.MemoryUsageGaugeSet$10@3dd6cf53, pools.PS-Eden-Space.used=com.codahale.metrics.jvm.MemoryUsageGaugeSet$17@3a428c1e, non-heap.usage=com.codahale.metrics.jvm.MemoryUsageGaugeSet$14@21d9632f, 堆.max=com.codahale.metrics.jvm.MemoryUsageGaugeSet$7@5db28b8, pools.PS-Surviver-Space.used=com.codahale.metrics.jvm.MemoryUsageGaugeSet$17@efcd307, pools.Metaspace.committed=com.codahale.metrics.jvm.MemoryUsageGaugeSet$18@20f09cba, total.max=com.codahale.metrics.jvm.MemoryUsageGaugeSet$3@4ada5390, pools.Metaspace.used=com.codahale.metrics.jvm.MemoryUsageGaugeSet$17@16982c9b, pools.压缩类空间.max=com.codahale.metrics.jvm.MemoryUsageGaugeSet$16@7e94b1a4, pools.PS-Surviver-Space.committed=com.codahale.metrics.jvm.MemoryUsageGaugeSet$18@5aa5f780, pools.PS-Old-Gen.used=com.codahale.metrics.jvm.MemoryUsageGaugeSet$17@427b7997}

我得到了对象的引用,而不是这些引用的值。怎么办?

共有1个答案

西门振
2023-03-14

要获取/打印对象的值,需要在类中实现<code>toString()没有。验证@javadoc

一种方法是使用自己的实现toString()扩展类。

另一种方法是遍历地图并打印每个值。您可能想尝试下面这样的东西.

Map<String, Metric> memoryMap = memory.getMetrics();

for (String key : memoryMap.keySet()) {
    Metric m = memoryMap.get(key);
    System.out.println(m.getClass());

    if (m instanceof Gauge) {
        System.out.println(((Gauge<Long>) m).getValue());
    }
}

memorySageGaugeSet产生仪表

希望这能有所帮助。

 类似资料:
  • 我正在向一个web应用程序添加Dropwizard指标。我使用metrics servlet来检索数据。然而,我无法获得返回的JVM细节。 我在度量注册表上设置了以下内容 根据下面的 javadoc,它说指标 Servlet 采用一个参数。https://metrics.dropwizard.io/4.1.2/manual/servlets.html 我已经这样做了,但是仍然没有得到JVM的统计数

  • 我目前正在尝试通过调用一个以MultiPartFormData作为输入的资源来编写一个IT测试。 它在应用程序“正常”启动时工作,但在使用DropwizardAppRule助手启动时不工作。 这是我的代码: QORUS_APP的发音如下: 我收到以下错误: 消息找不到媒体类型=多部分/表单数据,类型=类组织.玻璃鱼.泽西岛.媒体.多部分.表单数据多部分,通用类型=类组织.玻璃鱼.泽西岛.媒体.多部

  • 问题内容: 我有一个函数,可以遍历作为参数传递的接口的所有字段。为了实现这一点,我正在使用反射。问题是我不知道如何获取非指针字段的地址。这是一个例子: 上面的代码代表了我的测试结构。现在,这是遍历指定结构并列出有关其详细信息的实际函数: 这是结构实例化/初始化之后的实际测试: 最后是InspectStruct调用的输出: 如您所见,我正在使用递归,因此,如果其中一个字段是结构类型,则可以为其调用I

  • 问题内容: 我有一个JavaScript Webapp,用户需要抓住背景才能移动整个屏幕。因此,我希望光标悬停在背景上时进行更改。在和CSS光标是非常理想的。当然,它们仅在Firefox中工作…其他浏览器是否具有等效的游标?我是否需要做一些比标准CSS游标更多的自定义操作? 问题答案: 我认为这可能是您正在执行的操作中最接近的标准光标值: move 表示要移动的东西。

  • 我们有多个基于Web逻辑和Tomcat的应用程序。对于这些具有不同垃圾收集格式的不同java应用程序,获得用于监视堆问题、占用线程等的“标准”方法的典型解决方案是什么。 通常我想做的是从这些应用程序中获取最后一次完全垃圾收集和常规垃圾收集条目,并从它们中获取初始最大值。进行计算,将数据保存到进行报告,并在达到阈值时生成警报。 最好的方法是什么? 谢谢博帕利

  • 我正在一个滴滴巫师应用程序中工作。目前,使用拖放向导,某些指标包含在 终结点中 因此,如果您将< code>@Timed设置为控制器,它会自动出现在那里。 问题是当想要添加自定义指标时。 我检查了这份文件: https://metrics.dropwizard.io/3.1.0/getting-started/ 所以我创建了自己的注册表并添加了自己的计时器。 我在控制台报告器中看到它,工作得很好。