用Java创建性能计数器

时间:2010-12-21 14:30:11

标签: java performancecounter

有谁知道如何在Java中创建一个新的性能计数器(perfmon工具)

例如:用于监控用户操作数量/持续时间的新性能计数器。

我在C#中创建了这样的性能计数器,这很容易,但是我找不到任何有助于在Java中创建它的东西......

3 个答案:

答案 0 :(得分:3)

如果您想独立于主代码开发性能计数器,您应该查看方面编程(AspectJJavassist)。

您可以根据需要插入性能计数器,而无需修改主代码。

答案 1 :(得分:1)

不确定你期望这个工具做什么,但我会创建一些数据结构来记录这些时间并计算如

class UserActionStats {
   int count;
   long durationMS;
   long start = 0;

   public void startAction() {
       start = System.currentTimeMillis();
   }
   public void endAction() {
       durationMS += System.currentTimeMillis() - start;
       count++;
   }
}

这些的集合可能看起来像

private static final Map<String, UserActionStats> map = 
        new HashMap<String, UserActionStats>();

public static UserActionStats forUser(String userName) {
    synchronized(map) {
        UserActionStats uas = map.get(userName);
        if (uas == null)
            map.put(userName, uas = new UserActionStats());
        return uas;
    }
}

答案 2 :(得分:1)

Java不会立即使用perfmon(但您应该在Solaris下看到DTrace。)

请参阅此问题以获取建议:Java app performance counters viewed in Perfmon