类加载-加载
加載
將類的字節碼載入方法區中,內部采用 C++ 的 instanceKlass 描述 java 類,它的重要 field 有:
?? ?_java_mirror 即 java 的類鏡像,例如對 String 來說,就是 String.class,作用是把 klass 暴露給 java 使用
?? ?
?? ?_super 即父類
?? ?
?? ?_fields 即成員變量
?? ?
?? ?_methods 即方法
?? ?
?? ?_constants 即常量池
?? ?
?? ?_class_loader 即類加載器
?? ?
?? ?_vtable 虛方法表
?? ?
?? ?_itable 接口方法表
?? ?
如果這個類還有父類沒有加載,先加載父類
加載和鏈接可能是交替運行的
注意
?? ?instanceKlass 這樣的【元數據】是存儲在方法區(1.8 后的元空間內),但 _java_mirror是存儲在堆中
?? ?
?? ?可以通過前面介紹的 HSDB 工具查看
?
總結
- 上一篇: 类文件结构-method-init和类文
- 下一篇: 类加载-连接-验证