Top


定義場所(file name)

hotspot/src/share/vm/services/classLoadingService.cpp

名前(function name)

void ClassLoadingService::notify_class_loaded(instanceKlass* k, bool shared_class) {

本体部(body)

  {- -------------------------------------------
  (1) (DTrace のフック点)
      ---------------------------------------- -}

      DTRACE_CLASSLOAD_PROBE(loaded, k, shared_class);

  {- -------------------------------------------
  (1) クラスのロード数を 1 インクリメントしておく.
      (インクリメントするカウンタは, 
       引数で shared class だと指定されていれば _shared_classes_loaded_count, 
       そうでなければ _classes_loaded_count を使う)
      ---------------------------------------- -}

      PerfCounter* classes_counter = (shared_class ? _shared_classes_loaded_count
                                                   : _classes_loaded_count);
      // increment the count
      classes_counter->inc();

  {- -------------------------------------------
  (1) UsePerfData オプションが指定されていれば, 
      ロードしたクラスのバイト数分だけカウンタをインクリメントしておく.
      (インクリメントするカウンタは, 
       引数で shared class だと指定されていれば _shared_classes_loaded_count, 
       そうでなければ _classes_loaded_count を使う)
      ---------------------------------------- -}

      if (UsePerfData) {
        PerfCounter* classbytes_counter = (shared_class ? _shared_classbytes_loaded
                                                        : _classbytes_loaded);
        // add the class size
        size_t size = compute_class_size(k);
        classbytes_counter->inc(size);
      }
    }

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