SystemDictionary

阅读更多
SystemDictionary正如它所暗示的那样,它是用来保存系统信息的一个字典,其实现基于Hash表。
它保存了系统已经加载了class信息。
下面是SystemDictionary保存class信息的变量。
  static Dictionary*        _dictionary;
 
  static PlaceholderTable*  _placeholders;
 
其中 _dictionary是存放已经加载的class的Hash表。
     _placeholders是存放正在加载的class的Hash表。
 
同时对于最常用的系统class,SystemDictionary又专门定义了变量,起到了cache的作用,
避免了每次使用都去_dictionary中查询。
例如:  static klassOop _object_klass;
        static klassOop _string_klass; 等等
 
这些变量均在SystemDictionary::initialize中被初始化。
 

JNI_CreateJavaVM
  |
  |-->Threads::create_vm
        |
        |-->init_globals
             |
             |-->universe2_init
                  |
                  |-->Universe::genesis
                        |
                        |-->SystemDictionary::initialize
                              |
                              |-->SystemDictionary::initialize_preloaded_classes
 
其中SystemDictionary::initialize_preloaded_classes就是初始化SystemDictionary中最常用的系统class变量。

你可能感兴趣的:(JNI,Cache)