Java虚拟机(JVM):第一幕:起源,不一定全,但是一定靠谱
在学习JVM之前,先分享一则信息:2009 年4月20日,Orace 宣布正式以74 亿美元的价格收购市值曾超过2000 亿美元的Sun公司,传奇的Sun Microsystems 从此落幕成为历史。
一、Java虚拟机的介绍
首先登场的是,虚拟机的始组:Sun Classic / Exact VM,Sun Classic 被誉为世界上第一款商用Java虚拟机,只能使用纯解释器方式来执行,如果想要使用即时编译器则必须进行外挂,但是如果使用了外挂,那么解释器就不能工作了。
所以,这个时候的Java语言很慢的印象,就在用户心中树立起来了。
接下来,上场的是英雄气短的Exact VM,成名之作在于准确式内存管理,简单来说,就是虚拟机知道内存中某一个位置的数据具体是什么类型的。
随之而来的是,武林盟主:HotSpot VM,是目前使用范围最广的Java虚拟机。就是这么一款吊炸天的虚拟机,是由一家小公司开发的。于是,在1997年,Sun公司,收购了Longview Technologies公司,从而获得了HotSpot虚拟机。名称中的HotSpot指的是:热点代码探测能力。可以通过执行计数器来找出最具有编译价值的代码,之后通知即时编译器以方法为单位进行编译。
总的来说,只有编译器和解释器恰如其分的协同工作,可以在最优化的程序中,响应时间与最佳执行性能中取得平衡,而且无须等待本地代码的输出才能执行程序。
江湖之间,并不只有打打杀杀,还有小家碧玉的虚拟机Mobile / Embedded VM,在嵌入式设备上,ME VM不仅面临外部忧患,而且还面临这自家SE Embedded的竞争和侵蚀。当然了,既然有武林盟主,当然还有长老、大师之类的角色。天下第二的BEA JRockit / IBM J9 VM 在历史上也存在着一定的地位。BEA公司的JRockit 可是号称“世界上速度最快的Java虚拟机”,BEA 将自家的JRockit虚拟机着重发展成为专门为服务器硬件和服务端应用场景高度优化的虚拟机,JRockit 内部不包含解释器的实现,全部代码都靠着即时编译器编译后执行。JRockit 的垃圾收集器也是处于Java虚拟机的领先水平。但是,随着BEA 公司被Oracle公司收购,版本永远停留在了R28。
IBM J9虚拟机的定位,跟HotSpot差不多,在设计上全面考虑服务端、桌面应用,再到嵌入式的多用途虚拟机,J9的职责分离与模块化做的比HotSpot更加的优秀。
当然了,除了平常运行的商业虚拟机,还有一些软硬件相结合工作的专有虚拟机,往往能够实现更高的执行性能,比如Liquid VM,它直接越过通用的操作系统去直接控制硬件,不需要进行内核态/用户态的切换,可以最大限度地发挥硬件的能力。Azul VM虚拟机提供了巨大内存范围内停顿时间可以控制的垃圾收集器(PGC和C4收集器),但是这个虚拟机是Azul公司在HotSpot虚拟机的基础上,进行大量改进得来的。Azul公司发布了自己的Zing虚拟机,Zing虚拟机的好处实在是太多了,可以让普通用户无须了解垃圾收集等底层调优,享有低延迟、快速预热、易于监控的功能。这可是Zing虚拟机的核心价值与卖点。
有擂主就肯定有挑战者的存在,这里的挑战者是来自Apache的Harmony与Google 公司的Android Dalvik 虚拟机,但是这两个虚拟机不能被称为Java虚拟机。在虚拟机的海洋中,不仅仅只有商用虚拟机,还有一些设计之初就仅仅抱着研究、验证某种技术和观点。比如:KVM、Java Card VM、Squawk VM、JavaInJava、Maxine VM、Jikes RVM、IKVM.NET等等。
Java虚拟机(JVM):第一幕:起源,不一定全,但是一定靠谱的更多相关文章
- 深入解析java虚拟机-jvm运行机制
转自oschina 一:JVM基础概念 JVM(Java虚拟机)一种用于计算设备的规范,可用不同的方式(软件或硬件)加以实现.编译虚拟机的指令集与编译微处理器的指令集非常类似.Java虚拟机包括一套字 ...
- Java虚拟机(JVM)知多少
本文大量参考:https://www.cnblogs.com/lfs2640666960/p/9297176.html 概述 JVM是JRE的一部分.它是一个虚构出来的计算机,是通过在实际的计算机上仿 ...
- 深入理解java虚拟机JVM(下)
深入理解java虚拟机JVM(下) 链接:https://pan.baidu.com/s/1c6pZjLeMQqc9t-OXvUM66w 提取码:uwak 复制这段内容后打开百度网盘手机App,操作更 ...
- java虚拟机jvm启动后java代码层面发生了什么?
java虚拟机jvm启动后java代码层面发生了什么? 0000 我想验证的事情 java代码在被编译后可以被jdk提供的java命令进行加载和运行, 在我们的程序被运行起来的时候,都发生了什么事情, ...
- Java虚拟机JVM学习07 类的卸载机制
Java虚拟机JVM学习07 类的卸载机制 类的生命周期 当Sample类被加载.连接和初始化后,它的生命周期就开始了. 当代表Sample类的Class对象不再被引用,即不可触及时,Class对象就 ...
- Java虚拟机JVM学习06 自定义类加载器 父委托机制和命名空间的再讨论
Java虚拟机JVM学习06 自定义类加载器 父委托机制和命名空间的再讨论 创建用户自定义的类加载器 要创建用户自定义的类加载器,只需要扩展java.lang.ClassLoader类,然后覆盖它的f ...
- Java虚拟机JVM学习05 类加载器的父委托机制
Java虚拟机JVM学习05 类加载器的父委托机制 类加载器 类加载器用来把类加载到Java虚拟机中. 类加载器的类型 有两种类型的类加载器: 1.JVM自带的加载器: 根类加载器(Bootstrap ...
- Java虚拟机JVM学习04 类的初始化
Java虚拟机JVM学习04 类的初始化 类的初始化 在初始化阶段,Java虚拟机执行类的初始化语句,为类的静态变量赋予初始值. 在程序中,静态变量的初始化有两种途径: 1.在静态变量的声明处进行初始 ...
- Java虚拟机JVM学习03 连接过程:验证、准备、解析
Java虚拟机JVM学习03 连接过程:验证.准备.解析 类被加载后,就进入连接阶段. 连接就是将已经读入到内存的类的二进制数据合并到虚拟机的运行时环境中去. 连接阶段三个步骤:验证.准备和解析. 类 ...
- Java虚拟机JVM学习02 类的加载概述
Java虚拟机JVM学习02 类的加载概述 类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对 ...
随机推荐
- PHP站群询盘订单提交过滤系统,2018年作品
//作者主页: https://www.bz80.vip header("Content-type: text/html; charset=utf-8"); //UTF8编码,避免 ...
- 2023-07-03:讲一讲Redis缓存的数据一致性问题和处理方案。
2023-07-03:讲一讲Redis缓存的数据一致性问题和处理方案. 答案2023-07-03: 数据一致性 当使用缓存时,无论是在本地内存中缓存还是使用 Redis 等外部缓存系统,会引入数据同步 ...
- 利用身份验证和授权机制,例如OAuth、JWT 和 API 密钥,APIaaS 如何帮助解决安全挑战?
什么是 APIaaS? APIaaS,即 API 即服务(API as a Service)是一种创新的基于云的方法,提供 API(应用程序编程接口),使第三方服务提供商能够访问特定服务.数据或资源. ...
- 【调制解调】AM 调幅
说明 学习数字信号处理算法时整理的学习笔记.同系列文章目录可见 <DSP 学习之路>目录.本篇介绍 AM 调幅信号的调制与解调,内附全套 MATLAB 代码. 目录 说明 1. AM 调制 ...
- 「学习笔记」KMP 算法
前置知识 前缀 是指从串首开始到某个位置 \(i\) 结束的一个特殊子串. 真前缀 指除了 \(S\) 本身的 \(S\) 的前缀. 举例来说, 字符串 abcabeda 的所有前缀为 {a, ab, ...
- 【小小Demo】网页视频通话小🌰子
工程名 video-call 一个简单的 音视频通话 demo,包含:视频.麦克风.屏幕共享操作. 项目环境 jdk1.8 idea maven springboot 2.1.1.RELEASE we ...
- 十分钟学会angular
首先笔者有一定的vue基础,但是遇到了含有angular的应用,因此需要学习angular的应用,在学习过程中将自己的学习步骤给一一记录下来,因此假设读者也是具有html及js的基础,在此基础上可以跟 ...
- PostgreSQL 10 文档: 系统表
第 51 章 系统目录 目录 51.1. 概述 51.2. pg_aggregate 51.3. pg_am 51.4. pg_amop 51.5. pg_amproc 51.6. pg_attrde ...
- shell: xcall
#!/bin/bash ips=( 1.1.1.2 1.1.1.1 ) port= user= passwd= for i in ${ips[@]} do echo "== $i ==&qu ...
- Selenium+2Captcha 自动化+验证码识别实战
本文深入探讨了使用Selenium库进行网页自动化操作,并结合2Captcha服务实现ReCAPTCHA验证码的破解.内容涵盖Selenium的基础知识.验证码的分类.2Captcha服务的使用,以及 ...