Incorrect arguments is passed to sun.misc.Perf#createLong
Mandy Chung
mandy.chung at oracle.com
Wed Apr 10 14:10:15 PDT 2013
Hi Yasumasa,
I'm adding core-libs and bcc serviceability-dev to move this thread to
core-libs for sun.misc.PerfCounter discussion.
On 4/9/2013 4:50 AM, Yasu wrote:
> Hi,
>
> I'm trying to create entry from Java program to hsperfdata through
> sun.misc.PerfCounter .
First of all, sun.misc.PerfCounter is a private API that is not
supported and may be changed and removed in any future release. I'm
curious how you create a counter in hsperfdata through
sun.misc.PerfCounter. The constructor is private.
> 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 .
>
Indeed - it's a bug that calls Perf.createLong with the incorrect
parameters. I have filed a bug (8011934).
Have you signed the OCA [1]?
Thanks
Mandy
[1] http://openjdk.java.net/contribute/
> 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
More information about the serviceability-dev
mailing list