Java 使用DropWizard metrics Jvm获取JMX值

Java 使用DropWizard metrics Jvm获取JMX值,java,dropwizard,codahale-metrics,Java,Dropwizard,Codahale Metrics,我尝试使用dropWizard库获取JVM度量值(MemoryUsageGaugeSet、GarbageCollectionUsageGaugeSet) <dependency> <groupId>io.dropwizard.metrics</groupId> <artifactId>metrics-jvm</artifactId> <version>3.1.2</version> &

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

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

io.dropwizard.metrics
度量jvm
3.1.2
代码实现

  public static void main(String[] args ){
  MemoryUsageGaugeSet memory = new MemoryUsageGaugeSet();
  Map<String, Metric> memoryMap = memory.getMetrics();
  system.out.println( memoryMap);}
publicstaticvoidmain(字符串[]args){
MemoryUsageGaugeSet memory=新的MemoryUsageGaugeSet();
Map 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.MemoryU萨吉塞特$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.Compressed Class Space.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.memr尤萨吉塞特$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.Compressed Class Space.usage=com.codahale.metrics.jvm.MemoryUsageGaugeSet$15@17ae8d04,heap.usage=com.codahale.metrics.jvm.MemoryUsageGaugeSet$9@35c43de3,pools.PS Eden Space.usage=com.codahale.metrics.jvm.memoryusagegaugageset$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.Compressed Class Space.init=com.codahale.metrics.jvm.MemoryUsageGaugeSet$19@25135cd7,pools.Metaspace.init=com.codahale.metrics.jvm.MemoryUsageGaugeSet$19@4b066cf6,pools.PS Survivor 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,heap.init=com.codahale.metrics.jvm.MemoryUsageGau石膏$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不n-heap.usage=com.codahale.metrics.jvm.MemoryUsageGaugeSet$14@21d9632f,heap.max=com.codahale.metrics.jvm.MemoryUsageGaugeSet$7@5db28b8,pools.PS Survivor 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.MemoryUs年龄表集$3@4ada5390,pools.Metaspace.used=com.codahale.metrics.jvm.MemoryUsageGaugeSet$17@16982c9b,pools.Compressed Class Space.max=com.codahale.metrics.jvm.MemoryUsageGaugeSet$16@7e94b1a4,pools.PS Survivor Space.committed=com.codahale.metrics.jvm.MemoryUsageGaugeSet$18@5aa5f780,pools.PS-Old-Gen.used=com.codahale.metrics.jvm.MemoryUsageGauge设置$17@427b7997}


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

要得到/打印对象的值,你需要在类中实现
toString()
,而
MemoryUsageSet
没有。 核实@

一种方法是使用自己的实现扩展类
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());
    }
}
Map memoryMap=memory.getMetrics();
for(字符串键:memoryMap.keySet()){
度量m=memoryMap.get(键);
System.out.println(m.getClass());
if(仪表的m实例){
System.out.println(((仪表)m.getValue());
}
}
MemoryUsageGaugeSet
生成
Gauge
,它是
度量的一个实现

希望这有帮助