在Java Application Monitor(JAMon)中使用多个标签

时间:2015-06-17 08:49:57

标签: java jamon

是否可以使用相同的JAMon Monitor类监控不同的处理步骤?例如,在代码示例中,我想测量" Point1"的执行时间。和" Point2"。但是,该示例仅返回有关第二步的统计信息。当然我可以创建几个Monitor类型的对象。但也许有一种更清洁的方式?

Monitor mon = null;     
for(int i =0; i < 1000; i++){
    //Part1
    mon = MonitorFactory.start("Point 1");
    Thread.sleep(2);
    mon.stop();     

    //Part2
    mon = MonitorFactory.start("Point 2");
    mon.stop();
}

System.out.println(mon.toString());

输出:

  

JAMon Label = Point 2,Units = ms。:( LastValue = 0.0,Hits = 1000.0,   Avg = 0.001,总数= 1.0,Min = 0.0,Max = 1.0,Active = 0.0,Avg Active = 1.0,   Max Active = 1.0,First Access = Wed Jun 17 10:40:44 CEST 2015,Last   Access = Wed Jun 17 10:40:46 CEST 2015)

期望的输出:

  

JAMon标签=第1点,单位= ms :( LastValue = 0.0,Hits = 1000.0,   Avg = 0.001,总数= 1.0,Min = 0.0,Max = 1.0,Active = 0.0,Avg Active = 1.0,   Max Active = 1.0,First Access = Wed Jun 17 10:40:44 CEST 2015,Last   Access = Wed Jun 17 10:40:46 CEST 2015)

     

JAMon Label = Point 2,Units = ms。:( LastValue = 0.0,Hits = 1000.0,   Avg = 0.001,总数= 1.0,Min = 0.0,Max = 1.0,Active = 0.0,Avg Active = 1.0,   Max Active = 1.0,First Access = Wed Jun 17 10:40:44 CEST 2015,Last   Access = Wed Jun 17 10:40:46 CEST 2015)

2 个答案:

答案 0 :(得分:0)

您可以将监视器toString()调用更改为显式的getMonitor(...)调用。

Monitor mon = null;   

for(int i =0; i < 1000; i++){
  //Part1
  mon = MonitorFactory.start("Point 1");
  Thread.sleep(2);
  mon.stop();     

  //Part2
  mon = MonitorFactory.start("Point 2");
  mon.stop();
}

System.out.println(MonitorFactory.getMonitor("Point 1").toString());
System.out.println(MonitorFactory.getMonitor("Point 2").toString());

或者你可以创建2个监视器。

Monitor mon1 = null;   
Monitor mon2 = null;     

for(int i =0; i < 1000; i++){
  //Part1
  mon1 = MonitorFactory.start("Point 1");
  Thread.sleep(2);
  mon1.stop();     

  //Part2
  mon2 = MonitorFactory.start("Point 2");
  mon2.stop();
}

System.out.println(mon1.toString());
System.out.println(mon2.toString());

答案 1 :(得分:0)

有一种比其他答案更好的方法:

for( Object monitor: MonitorFactory.getMap().values() ){
    System.out.println( monitor ); 
}

这将打印所有使用过的显示器,直到现在。在所有线程中。正是你想要的。

您可以检查已完成的代码示例并输出here