Java对象设计成OOP-Klass
2017-07-14 18:38
176 查看
HotSpot源码中为什么要把Java对象设计成OOP-Klass这种结构?仅仅是为了避免每个Java对象都生成一个虚函数表吗?
学习JVM不错的网址:http://www.open-open.com/lib/view/open1352431526366.html
http://hg.openjdk.java.net/jdk8/jdk8/hotspot/file/87ee5ee27509/src/share/vm/oops/klass.hpp
vtbl主要是实现多态这个特性的,如果一个类的所有的实例都是公用一个vtbl? 这样实现的多态不会会有问题
对象的实例并没有虚函数表,实例所属的klass对象有虚函数表OOP-KLASS模型就是为了减少 每个对象一个虚函数表的消耗 https://code.google.com/archive/p/strongtalk/wikis/VMTypesForSmalltalkObjects.wiki hotspot用的是这个设计方式 这里有这个模型的历史 java 的设计理念就是如此,多态主要依赖动态绑定,而分发则是静态的。所以java生成字节码invokevirtual很常见。公用vtbl应该收益比较大吧
所以最终都归结为方法的调用,传统的堆栈结构和Java的基于操作数栈的结构,都是为函数调用服务的。没有函数调用,一切都运行不起来
学习JVM不错的网址:http://www.open-open.com/lib/view/open1352431526366.html
相关文章推荐
- OOP设计模式[JAVA]——02观察者模式
- Java面向对象设计 构造函数设计
- OOP编程比较学习__C++ & JAVA (一)定义类和创建对象
- 【java基础】单例设计模式:保证一个类在内存中的对象唯一性
- java设计模式(1)-------单例,工厂,值对象,装饰模式
- 面试准备之--java进阶(涉及对象拷贝、反射、设计模式)
- Java面向对象设计多态特征理解
- Java_30_面向对象编程(OOP)的本质_类的方式组织代码_对象的方式组织(封装)数据
- 13-MySQL面向对象设计:数据表与Java对象对应关系
- java面向对象设计的六大原则
- java面向对象之封装(2)this和单例设计模式
- VB.NET和Java的OOP设计
- 面向对象 java oop
- 设计模式(Design Patterns)-可复用面向对象软件的基础 05:原型模式(Prototype)和Java中的深、浅拷贝
- 61条Java面向对象设计的经验原则
- Java 空对象设计模式(Null Object Pattern) 讲解
- Java重修之路(七)面向对象之静态,主函数,Doc文档,静态代码块,对象初始化过程,单例设计模式
- 5本最佳的Java面向对象理论和设计模式的书籍
- oop java面对对象 sduty-java-05days
- VB.NET和Java的OOP设计