JAVA虚拟机家族简介

Classic VM

  JDK1.0发布,第一款商议的JAVA虚拟机。纯解释器方式来执行java代码的的JAVA虚拟机。如果要使用即时编译就需要外挂编译器。如果外挂了编译器,及时编译器会完全接管虚拟机的执行系统,解释器就不能工作。也就是说解释器和编译器不能配合工作。这也就意味着,如果要使用编译执行,编译器就对所有代码进行编译。

  关于解释器和即时编译:https://www.cnblogs.com/jthr/p/15556841.html

  在JDK1.2之前,它是唯一的虚拟机。JDK1.2时,它和HOT SPOT VM 并存,默认使用Classic VM,JDK1.3时默认使用HOT SPOT VM。JDK1.4,Classic VM退出商用虚拟机的历史舞台。

Exact VM

  它是为了解决Classic VM的一些问题而开发出来的虚拟机。它有了热点探测、两级即时编译器、编译器和解释器混合工作等模式。它使用准确试内存管理,虚拟机可以知道内存中某个位置存了什么数据是什么类型。有能力分辨它是一个引用地址还是实际的数据,这是垃圾收集时正确判断堆上的数据是否还可能被使用的前提。

  很可惜的是它只存在了很短的时间,就被HotSpotVM替代。只发行了Solaries版本,windows版本和linux版本都没有。

HotSpot VM

  它是OpenJDK和OrcaleJDK的默认的JAVA虚拟机,是目前使用最广的JAVA虚拟机。

  它是由Longview Technologies设计开发的,在1997年被sun公司收购。

  HotSpot继承了Classic VM和Exact VM的优点,也有自己的优势。

  它的名称中HotSpot指的是它的热点代码探测技术。它可以通过执行计数器找到最具有编译价值的代码,通过即时编译器以方法为单位编译。如果一个方法被频繁调用或者有效循环次数很多,会分别触发标准即时编译和栈上替换编译。通过编译器和解释器的协同工作,可以在最优化的程序响应时间和最佳执行性能中取得平衡。

KVM

  除了服务器、桌面领域,JAVA也有移动端的虚拟机。简单、轻量、高度可移植,在移动平台运行

JRokeit

  由BEA公司设计开发的,后面BEA被oracle收购。

  它专注于服务器端应用,所以不关注程序的启动速度。它内部不包含解释器的实现,全部代码都靠即时编译器编译执行。它的垃圾回收器和Jvava Mission Controller故障处理套件的实现,在当时也处于领先水平。但是它被Oracle收购后,永远的停留在R28版本,这是JDK6版Jrocket的代号。

IBM J9

  由IBM设计开发。它在设计上是全面考虑桌面、嵌入式、服务器的多用途虚拟机。J9的职责分离和模块化做的比HotSpot更好。它到今天的应用还是比较活跃的。

JAVA虚拟机-01-JAVA虚拟机家族简介的更多相关文章

  1. 086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结

    086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结 本文知识点:面向对象基础(类和对象)总结 说明 ...

  2. 085 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 04 构造方法调用

    085 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 04 构造方法调用 本文知识点:构造方法调用 说明:因为时间紧张,本人写博客过程中只是 ...

  3. 084 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 03 构造方法-this关键字

    084 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 03 构造方法-this关键字 本文知识点:构造方法-this关键字 说明:因为时间紧 ...

  4. 083 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 02 构造方法-带参构造方法

    083 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 02 构造方法-带参构造方法 本文知识点:构造方法-带参构造方法 说明:因为时间紧张, ...

  5. 082 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 01 构造方法-无参构造方法

    082 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 01 构造方法-无参构造方法 本文知识点:构造方法-无参构造方法 说明:因为时间紧张, ...

  6. 081 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 06 new关键字

    081 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 06 new关键字 本文知识点:new关键字 说明:因为时间紧张,本人写博客过程中只是 ...

  7. 080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则

    080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则 本文知识点:单一职责原则 说明:因为时间紧张,本人写博客过程中只是 ...

  8. 079 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 04 实例化对象

    079 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 04 实例化对象 本文知识点:实例化对象 说明:因为时间紧张,本人写博客过程中只是对知 ...

  9. 078 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 03 创建类

    078 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 03 创建类 本文知识点:创建类 说明:因为时间紧张,本人写博客过程中只是对知识点的关 ...

  10. 077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象

    077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象 本文知识点:类和对象 说明:因为时间紧张,本人写博客过程中只是对知识点 ...

随机推荐

  1. Web浏览器Linux Shell(shellinabox解决通用区服务器Linux Shell访问很麻烦的问题)

    问题背景 通用区服务器的Linux Shell访问,比较麻烦 需要动态密码(手机上装Token)连跳板机,再用跳板机上的终端工具连Linux Shell 改进方法 使用shellinabox,就能直接 ...

  2. mysql 在连接表中的要点

    思路:分析需求,分析字段来自哪些表 (连接查询)            确定使用哪种连接查询?  确定交叉点(这两个表中哪些数据是相同的)            判断条件 such as  学生表中的 ...

  3. 【Datawhale】动手学数据分析

    动手学数据分析 第一章:数据载入及初步观察 载入数据 任务一:导入numpy和pandas import numpy as np import pandas as pd 任务二:载入数据 train_ ...

  4. jsp 页面返回、本页面刷新

    返回上一页面: window.history.go(-1);  //返回上一页window.history.back();  //返回上一页 返回上一页面并对上一页面刷新: history.go(-1 ...

  5. MySQL进阶实战2,那些年学过的事务

    @ 目录 一.MySQL服务器逻辑架构 二.并发控制 1.读写锁 2.锁粒度 3.表锁 4.行级锁 三.事务 1.原子性(atomicity) 2.一致性(consistency) 3.隔离性(iso ...

  6. [信息抽取]基于ERNIE3.0的多对多信息抽取算法:属性关系抽取

    [信息抽取]基于ERNIE3.0的多对多信息抽取算法:属性关系抽取 实体关系,实体属性抽取是信息抽取的关键任务:实体关系抽取是指从一段文本中抽取关系三元组,实体属性抽取是指从一段文本中抽取属性三元组: ...

  7. 【SQL进阶】Day05:窗口函数

    〇.概述 一.专用窗口函数 1.每类试卷得分前3名 自己写出来的部分 SELECT tag AS tid, uid AS uid, Rank AS ranking -- 如何确定排名 FROM exa ...

  8. 【Shell案例】【wc、awk、cat、管道】1、统计文件的行数

    描述写一个 bash脚本以输出一个文本文件 nowcoder.txt中的行数示例:假设 nowcoder.txt 内容如下: #include <iostream> using names ...

  9. CountDownLatch闭锁源码解析(基于jdk11)

    目录 CountDownLatch闭锁源码解析(基于jdk11) 1.1 CountDownLatch概述 1.2 CountDownLatch原理 1.2.1 基本结构(jdk11) 1.2.2 a ...

  10. 甜点cc的2022年回顾总结

    每每到年底,总会感概时间飞逝,总会莫名的心慌几天. 高中时代我就明白了一个道理:自己决定做的事,就算结果再烂以后也不要后悔,因为那无异于否定过去的自己.人不能总是否定自己的过去,因为我觉得这样会打击自 ...