SystemDictionary

本文解析了SystemDictionary的概念及其内部实现机制,介绍了它如何通过Hash表来保存已加载的class信息,并详细说明了其缓存最常用系统class的方式。
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变量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值