JAVA虚拟机-01-JAVA虚拟机家族简介
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虚拟机家族简介的更多相关文章
- 086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结
086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结 本文知识点:面向对象基础(类和对象)总结 说明 ...
- 085 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 04 构造方法调用
085 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 04 构造方法调用 本文知识点:构造方法调用 说明:因为时间紧张,本人写博客过程中只是 ...
- 084 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 03 构造方法-this关键字
084 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 03 构造方法-this关键字 本文知识点:构造方法-this关键字 说明:因为时间紧 ...
- 083 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 02 构造方法-带参构造方法
083 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 02 构造方法-带参构造方法 本文知识点:构造方法-带参构造方法 说明:因为时间紧张, ...
- 082 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 01 构造方法-无参构造方法
082 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 02 构造方法介绍 01 构造方法-无参构造方法 本文知识点:构造方法-无参构造方法 说明:因为时间紧张, ...
- 081 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 06 new关键字
081 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 06 new关键字 本文知识点:new关键字 说明:因为时间紧张,本人写博客过程中只是 ...
- 080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则
080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则 本文知识点:单一职责原则 说明:因为时间紧张,本人写博客过程中只是 ...
- 079 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 04 实例化对象
079 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 04 实例化对象 本文知识点:实例化对象 说明:因为时间紧张,本人写博客过程中只是对知 ...
- 078 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 03 创建类
078 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 03 创建类 本文知识点:创建类 说明:因为时间紧张,本人写博客过程中只是对知识点的关 ...
- 077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象
077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象 本文知识点:类和对象 说明:因为时间紧张,本人写博客过程中只是对知识点 ...
随机推荐
- 【题解】CF1714F Build a Tree and That Is It
题面传送门 解决思路 题目中虽然说是无根树,但我们可以钦定这棵树的根为节点 \(1\),方便构造,这是不 影响结果的. 以下记给定的三段长度为 \(a,b,c\). 先考虑无解的情况. 首先,给出的三 ...
- Python基础之网络编程:2、OSI协议之七层协议
目录 Python基础之网络编程 一.网络编程前戏 二.OSI七层协议 简介: 1.物理连接层 2.数据链路层 网络相关专业名词 3.网络层 4.传输层 Python基础之网络编程 一.网络编程前戏 ...
- Java:ArrayList的基本使用(学习笔记)
集合和数组的对比(为什么要有集合) 分为俩点 1. 长度:数组的长度是固定的,集合的长度是可变的. 2. 存储类型: 数组:可以存储基本数据类型,引用数据类型. 集合:只能存储引用数据类型. 小t ...
- (工具) TCMalloc笔记
下载及编译 wget https://github.com/gperftools/gperftools/releases/download/gperftools-2.9.1/gperftools-2. ...
- PP视频(PPTV聚力)web接口分析
前言 前几天我想看一个番剧, 正好搜索到了 PP视频,我才知道PP视频就是PPTV聚力,我想把番剧下载下来,结果发现视频竟然不是m3u8格式,而是多段mp4,所以简单的写了个脚本,可以在不登录的情况下 ...
- Redis分布式锁应用
Redis锁的使用 起因:分布式环境下需对并发进行逻辑一致性控制 架构:springboot2.Redis IDEA实操 先新建RedisLock组件 注:释放锁使用lua脚本保持原子性 @Compo ...
- 跟我学Python图像处理丨图像分类原理与案例
摘要:本篇文章将分享图像分类原理,并介绍基于KNN.朴素贝叶斯算法的图像分类案例. 本文分享自华为云社区<[Python图像处理] 二十六.图像分类原理及基于KNN.朴素贝叶斯算法的图像分类案例 ...
- web框架推导 wsgiref模块 jinja2模板语法 django框架简介 django基本操作
目录 纯手撸web框架 web框架的本质 手写web框架 存在的问题 基于wsgiref模块 基本介绍 推导流程 代码封装优化 总结 动静态网页 jinja2模块 前端.后端.数据库三者联动 推导流程 ...
- 如何让铁威马NAS可以通过互联网访问?
当你在家或者出差去外地时候,可能要通过互联网访问你的TNAS设备,而使用远程访问功能,你可以随时随地访问你的TNAS 设备.读取你TNAS 中的文件或是对你的TNAS 设备进行配置.远程访问能给你的工 ...
- 手写promise解决回调地狱问题
在介绍promise之前我们先来看一段代码: 根据案例我们可以看出,这段代码可以无限的嵌套下去,但是每嵌套一层,代码的运行就会降低,而解决回调地狱最好的办法就是new promise 一.什么是 pr ...