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