Low-Overhead Heap Profiling

Kirk Pepperdine kirk.pepperdine at gmail.com
Tue Jun 23 06:13:44 UTC 2015


Hi Jeremy,

> 
> 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?

This could be helpful.

> 
> - 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.

As long of these features don’t contribute to sampling bias I think they’d (at times) all be useful.


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

If you could get age data that could be interesting as well.

Kind regards,
Kirk Pepperdine



More information about the serviceability-dev mailing list