我正在查看JVMTI API(http://docs.oracle.com/javase/6/docs/platform/jvmti/jvmti.html)以獲取當前堆在給定狀態。jvmti:如何使用class_tag
爲了做到這一點,我想使用FollowReferences(http://docs.oracle.com/javase/6/docs/platform/jvmti/jvmti.html#FollowReferences)方法,該方法將一個指向jvmtiHeapCallbacks結構的指針作爲參數,該結構定義了幾個回調函數,特別是一個堆參考回調函數。
該回調必須是以下形式:
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函數,但它們似乎是jobject而不是jclass。