Low-Overhead Heap Profiling

Daniel D. Daugherty daniel.daugherty at oracle.com
Tue Jun 23 13:14:30 UTC 2015

 > ASGCT_CallTrace *trace;

So it looks like this uses the AsyncGetTrace() infrastructure.
Does your tool work on Windows and MacOS X?


On 6/22/15 10:58 PM, Jeremy Manson wrote:
> While I'm glad to hear that our colleagues at RedHat would love it, it 
> will still need a sponsor from Oracle.  Any volunteers?
> It will also need a little polish to be available to the world.  Open 
> design questions for upstreaming are things like:
> - Should the interval between samples be configurable?
> - Should it *just* take a stack trace, or should the behavior be 
> configurable?  For example, we have a variant that allows it to invoke 
> a callback on allocation. Do you want this?  Because it is being 
> called during allocation, the callback can't invoke JNI (because of 
> the potential for a safepoint), so it might be somewhat confusing to 
> the user.
> - If the answer to the above is yes, should it be able to invoke 
> *multiple* callbacks with multiple intervals?  That could get very 
> expensive and hairy.
> - Other than stack trace, what kind of information should the sampled 
> data contain?  Right now, the structure is:
> struct StackTraceData {
>   ASGCT_CallTrace *trace;
>   jint byte_size;
>   jlong thread_id;
>   const jbyte *name;
>   jint name_length;
>   jlong uid;
> };
> (where name is the class name, and uid is just a unique identifier.) 
>  For general consumption, we'll probably have to change the 
> ASGCT_CallTrace to a jvmtiStackInfo, I suppose.
> Jeremy

More information about the serviceability-dev mailing list