Up Top

Serviceability 機能 : JVMTI の処理 : JVMTI 関数の処理 : イベント管理 (Event Management) : 各イベントの通知処理 : VMObjectAlloc イベントの処理


概要(Summary)

VMObjectAlloc の通知処理は, 直接 JvmtiExport::post_vm_object_alloc() を呼び出すパスの他に, JvmtiVMObjectAllocEventCollector オブジェクトを用いたパスが存在する.

JvmtiVMObjectAllocEventCollector を使用する場合, まず通知するイベントの情報を JvmtiVMObjectAllocEventCollector オブジェクト内に溜めた後, JvmtiVMObjectAllocEventCollector のデストラクタ内で通知処理が行われる (See: JvmtiVMObjectAllocEventCollector).

処理の流れ (概要)(Execution Flows : Summary)

JvmtiVMObjectAllocEventCollector オブジェクト用の記録処理

(略) (no28916Q0G)
-> CollectedHeap::post_allocation_setup_obj()
   -> post_allocation_notify()
      -> JvmtiExport::vm_object_alloc_event_collector()
         -> JvmtiExport::record_vm_internal_object_allocation()
            -> JvmtiVMObjectAllocEventCollector::record_allocation()

(略) (no28916Q0G)
-> CollectedHeap::post_allocation_setup_array()
   -> post_allocation_notify()
      -> (同上)

イベントの通知処理

JVM_NewInstance()
-> JvmtiExport::post_vm_object_alloc()
   -> (登録されているコールバックを呼び出す)

JVM_InvokeMethod()
-> JvmtiExport::post_vm_object_alloc()
   -> (同上)

JVM_NewInstanceFromConstructor()
-> JvmtiExport::post_vm_object_alloc()
   -> (同上)

JvmtiVMObjectAllocEventCollector::~JvmtiVMObjectAllocEventCollector()
-> JvmtiExport::post_vm_object_alloc()
   -> (同上)

処理の流れ (詳細)(Execution Flows : Details)

JvmtiVMObjectAllocEventCollector::JvmtiVMObjectAllocEventCollector()

(#Under Construction) See: here for details

JvmtiEventCollector::setup_jvmti_thread_state()

See: here for details

JvmtiThreadState::set_vm_object_alloc_event_collector()

See: here for details

post_allocation_notify()

See: here for details

JvmtiExport::vm_object_alloc_event_collector()

See: here for details

JvmtiExport::record_vm_internal_object_allocation()

(#Under Construction) See: here for details

JvmtiVMObjectAllocEventCollector::record_allocation()

See: here for details

JvmtiThreadState::get_vm_object_alloc_event_collector()

See: here for details

JvmtiVMObjectAllocEventCollector::~JvmtiVMObjectAllocEventCollector()

(#Under Construction) See: here for details

JvmtiEventCollector::unset_jvmti_thread_state()

See: here for details


This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.