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

Reply via email to