特定の状態で現在のヒープを取得するために、JVMTI API ( http://docs.oracle.com/javase/6/docs/platform/jvmti/jvmti.html ) を見ています。
これを行うには、jvmtiHeapCallbacksへのポインタを引数として取るFollowReferences ( http://docs.oracle.com/javase/6/docs/platform/jvmti/jvmti.html#FollowReferences ) メソッドを使用したいと思います。いくつかのコールバック、特にヒープ参照コールバックを定義する構造。
このコールバックは、次の形式にする必要があります。
typedef jint (JNICALL *jvmtiHeapReferenceCallback)
(jvmtiHeapReferenceKind reference_kind,
const jvmtiHeapReferenceInfo* reference_info,
jlong class_tag,
jlong referrer_class_tag,
jlong size,
jlong* tag_ptr,
jlong* referrer_tag_ptr,
jint length,
void* user_data);
class_tag の使い方がわかりません。API で、class_tag を jclass に変換する機能を見つけることができませんでした。いくつかの例を見てきましたが、class_tag を使用できませんでした。
API には SetTag 関数と GetTag 関数がありますが、それらは jclass ではなく jobject 用のようです。