开发者

Creating Performance Counters in Java

开发者 https://www.devze.com 2023-01-31 10:22 出处:网络
Does anyone know how can I create a new Performance Counter (perfmon tool) in Java开发者_JAVA技巧?

Does anyone know how can I create a new Performance Counter (perfmon tool) in Java开发者_JAVA技巧?

For example: a new performance counter for monitoring the number / duration of user actions.

I created such performance counters in C# and it was quite easy, however I couldn’t find anything helpful for creating it in Java…


If you want to develop your performance counter independently from the main code, you should look at aspect programming (AspectJ, Javassist).

You'll can plug your performance counter on the method(s) you want without modifying the main code.


Java does not immediately work with perfmon (but you should see DTrace under Solaris).

Please see this question for suggestions: Java app performance counters viewed in Perfmon


Not sure what you are expecting this tool to do but I would create some data structures to record these times and counts like

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

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

A collection for these could look like

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;
    }
}
0

精彩评论

暂无评论...
验证码 换一张
取 消