本文知识点
-
OOP和klass的概念
-
OOP和Klass源码
-
HSDB的使用
OOP和klass的概念
OOPS: 即普通对象指针,用来描述对象实例信息
Klass: Java类的C++对等体,用来描述Java类
总体上是多个OOP和一个Klass是对应的. 相当于一个类可以有多个实例
A a = new A() ; A a1 = new A();
a,a1 分别对应着不同的OOP, 对应着同一个Klass
OOP和Klass源码
OOP中有很多模块,
其中最常用的是
instanceOop , 表示一个java类型实例
oopsHierarchy: 描述了对象的表示层次,描述了klass的表示层次,并为OOPS指针oopDesc* 定义了别名
markOop: 表示对象头
Klass 中对应的是:
instanceKlass : 在虚拟机层面描述一个java类
OOP源码
首先看oopsHierarchy.hpp
文件中,可以看到在OpenJDK的源码中都是用oopDesc* 等Desc* 来表示的.
在虚拟机内部,通过instanceOop
来表示