JVM 篇:虚拟机种类

通用平台的虚拟机

Classic VM
  • JDK1 与 JDK2 的官方默认虚拟机,世界第一种 java 虚拟机
  • 通过纯解释器执行 Java 代码,即时编译器只能通过外挂的形式存在,并且不能与解释器一起运行。(那个时候的 Java 很慢)
Exact VM
  • Sun 公司为了解决 Classic VM 的效率问题而计划研发的,但只在 Solaris 系统上发布过,后来就被 HotSpot 取代了
  • 因其使用准确式内存管理而闻名。(知道内存中某一块区域存放的是哪一种数据结构,有利于垃圾收集)
HotSpot
  • JDK3 之后的官方默认虚拟机
  • 同样有准确式内存管理
  • 因其热点探测技术而闻名。(知道哪一段代码经常执行,将其编译成机器代码,提高运行效率)
JRockit
  • BEA 公司研发的,对服务端高度优化的虚拟机
  • 其垃圾收集机制和 MissionControl 服务套件,一直处于 Java 虚拟机的领先水平
  • Oracle 在 2008 年收购 BEA 公司,在 2009 年收购 Sun 公司。Oracle 计划从 JDK8 开始将两种虚拟机融合成一种。(JDK8 的 HotSpot 已经放弃用永久代来实现方法区,转而使用元空间)
J9
  • IBM 公司研发,主要为了在自家研发的产品上跑 Java 程序

其他虚拟机

Dalvik VM
  • Google 为 Android 开发而研发的虚拟机,不是 java 虚拟机,但关系很密切
  • Dalvik VM 基于寄存器运行,而 JVM 基于栈
  • Dalvik 通过将 class 文件转化为 dex 文件来运行
Microsoft JVM
  • 微软曾经在其操作系统上开发了一款 win 专用的 JVM (Win 平台下最快的虚拟机),后和 Sun 打官司输掉,该项目停止。
Apache Harmony
  • Apache 开发的 JDK,但一直没有得到 Sun 公司的授权,Apache 因此退出了 JCP
  • 后 Sun 公司开源了 OpenJDK,Apache Harmony 项目就变得不太热门

64 位虚拟机

  • 因为指针膨胀和数据对齐补白等缘故,64 位虚拟机比 32 位虚拟机所需要消耗的内存更大 (约多 10% - 30% 的开销,性能相差 15%)
  • 现在大多数商用系统都是通过虚拟集群的方式来支持大于 4G 的内存。
  • 64 位的虚拟机还有一段路要走
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值