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