这是一个创建于 2096 天前的主题,其中的信息可能已经有所发展或是发生改变。
Java 中为啥要使用 oop-klass 模型?
我再网上搜了一下原因都是说
这是因为 HotSopt JVM 的设计者不想让每个对象中都含有一个 vtable (虚函数表),所以就把对象模型拆成 klass 和 oop,其中 oop 中不含有任何虚函数,而 klass 就含有虚函数表,可以进行 method dispatch。
但是实际上,每个对象都只是拥有一个指向 vtable(虚函数表)的指针 vptr,同一个类的实例化对象指向的 vtable 都是同一个。
采用 oop-klass 对象模型的话,相当于每个 Java 对象都有一个指向 Class 对象的指针,然后 Class 对象有一个 vptr 指向 vtable,这样不是更绕了吗?