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