Incorrect arguments is passed to sun.misc.Perf#createLong

Yasu yasu at ysfactory.dip.jp
Tue Apr 9 04:50:20 PDT 2013


Hi,

I'm trying to create entry from Java program to hsperfdata through sun.misc.PerfCounter .
However, I cannot watch the updated value in my entry through the jstat with interval option.

I guess this cause is that wrong arguments are passed from PerfCounter#<init> to Perf#createLong .

sun.misc.PerfCounter:
---------
     private PerfCounter(String name, int type) {
         this.name = name;
         ByteBuffer bb = perf.createLong(name, U_None, type, 0L);
         bb.order(ByteOrder.nativeOrder());
         this.lb = bb.asLongBuffer();
     }
---------

sun.misc.Perf:
---------
     public native ByteBuffer createLong(String name, int variability,
                                         int units, long value);
---------

"type" in constructor of PerfCounter means "variability".
So "type" should be set to 2nd argument in perf.createLong()

perf.createLong() should be called as following:
---------
         ByteBuffer bb = perf.createLong(name, type, U_None, 0L);
---------


I've applied a patch which is attached in this email, it's works fine.


Thanks,

Yasumasa
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: perf.patch
Url: http://mail.openjdk.java.net/pipermail/serviceability-dev/attachments/20130409/4f6ca539/perf.patch 


More information about the serviceability-dev mailing list