Up Top

Serviceability 機能 : JVMTI の処理 : JVMTI 関数の処理 : クラス (Class) : GetLoadedClasses() 及び GetClassLoaderClasses() の処理


概要(Summary)

(See: JVMTI 仕様)

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

GetLoadedClasses() の処理

JvmtiEnv::GetLoadedClasses()
-> JvmtiGetLoadedClasses::getLoadedClasses()
   -> (1) (前準備を行う)
          -> JvmtiGetLoadedClassesClosure::JvmtiGetLoadedClassesClosure()
             -> set_this()
                -> JavaThread::set_jvmti_get_loaded_classes_closure()

      (2) 該当するクラスの個数を数える
          -> SystemDictionary::classes_do()
             -> ... (See: #TODO)
                -> JvmtiGetLoadedClassesClosure::increment()
          -> Universe::basic_type_classes_do()
             -> ... (See: #TODO)
                -> JvmtiGetLoadedClassesClosure::increment()

      (3) 個数分の配列を確保する
          -> JvmtiGetLoadedClassesClosure::allocate()

      (4) 確保した配列に該当のクラスを格納する
          -> SystemDictionary::classes_do()
             -> ... (See: #TODO)
                -> JvmtiGetLoadedClassesClosure::add()
          -> Universe::basic_type_classes_do()
             -> ... (See: #TODO)
                -> JvmtiGetLoadedClassesClosure::add()

      (5) 返却用の配列に結果をコピー
          -> JvmtiGetLoadedClassesClosure::extract()

GetClassLoaderClasses() の処理

JvmtiEnv::GetClassLoaderClasses()
-> JvmtiGetLoadedClasses::getClassLoaderClasses()
   -> (1) (前準備を行う)
          -> JvmtiGetLoadedClassesClosure::JvmtiGetLoadedClassesClosure()
             -> set_this()
                -> JavaThread::set_jvmti_get_loaded_classes_closure()

      (2) 該当するクラスの個数を数える
          -> SystemDictionary::classes_do()
             -> ... (See: #TODO)
                -> JvmtiGetLoadedClassesClosure::increment_with_loader()
          -> Universe::basic_type_classes_do()
             -> ... (See: #TODO)
                -> JvmtiGetLoadedClassesClosure::increment_for_basic_type_arrays()

      (3) 個数分の配列を確保する
          -> JvmtiGetLoadedClassesClosure::allocate()

      (4) 確保した配列に該当のクラスを格納する
          -> SystemDictionary::classes_do()
             -> ... (See: #TODO)
                -> JvmtiGetLoadedClassesClosure::add_with_loader()
          -> Universe::basic_type_classes_do()
             -> ... (See: #TODO)
                -> JvmtiGetLoadedClassesClosure::add_for_basic_type_arrays()

      (5) 返却用の配列に結果をコピー
          -> JvmtiGetLoadedClassesClosure::extract()

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

JvmtiEnv::GetLoadedClasses()

See: here for details

JvmtiGetLoadedClasses::getLoadedClasses()

See: here for details

JvmtiGetLoadedClassesClosure::JvmtiGetLoadedClassesClosure()

See: here for details

JvmtiGetLoadedClassesClosure::JvmtiGetLoadedClassesClosure(jobject initiatingLoader)

See: here for details

set_this()

See: here for details

JavaThread::set_jvmti_get_loaded_classes_closure()

See: here for details

JvmtiGetLoadedClassesClosure::increment()

See: here for details

JvmtiGetLoadedClassesClosure::allocate()

See: here for details

JvmtiGetLoadedClassesClosure::add()

See: here for details

JvmtiGetLoadedClassesClosure::extract()

See: here for details

JvmtiGetLoadedClassesClosure::get_element()

See: here for details

JvmtiEnv::GetClassLoaderClasses()

See: here for details

JvmtiGetLoadedClasses::getClassLoaderClasses()

See: here for details

JvmtiGetLoadedClassesClosure::increment_with_loader()

(#Under Construction)

JvmtiGetLoadedClassesClosure::increment_for_basic_type_arrays()

(#Under Construction)

JvmtiGetLoadedClassesClosure::add_with_loader()

(#Under Construction)

JvmtiGetLoadedClassesClosure::add_for_basic_type_arrays()

(#Under Construction)


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