JDK JRE JVM
先简单过一遍历史,这算是常识。
1991.4 Oak语言:java前身,目标:电子产品上的程序架构
1996.1 JDK1.0发布。纯解释执行的Jvm实现
1997.2 发布JDK1.1。JDBC,内部类,反射等出现
1998.12 JDK1.2发布。拆分三个体系:J2SE(桌面开发),J2EE(企业级开发),J2ME(面向移动端)。集合类等出现。首次内置JIT编译器
1999.4 HotSpot虚拟机发布。JDK1.3以后成为Sun JDK的默认虚拟机
2002.2 JDK1.4发布。引入异常类,正则,NIO等
2004.9 JDK1.5发布,引入泛型,动态注解,枚举,可变长参数,foreach等。最后一个支持Win9x的Java版本
2006.12 JDK1.6发布。J2EE等更名。JVM内部机制较大修改。同年Java大会Sun宣布Java开源,OpenJDK建立
2009.4 Oracle收购Sun公司
Dalvik VM Google实现的android核心组成部分。
DalvikVM与JVM的区别
对象头(18-11)
对象在内存中的存储布局分为 对象头,实例数据,对齐填充。
对象头包括 对象自身运行时数据(Mark World 64Bits),类型指针。对象指向其类的元数据的指针(用于确定该对象是哪个类的实例)。
锁标志位,也保存在对象头中。锁标志位与是否偏向锁 对应到唯一的锁状态
未完待续…