JVM学习笔记之认识JDK(一)

news/2024/7/7 11:23:18

1. HotSpot VM: HotSpot VM是Sun JDK和OpenJDK中所带的虚拟机,也是目前使用范围最广的Java虚拟机。

什么是HotSpot VM & 深入理解Java虚拟机 JVM?

提起HotSpot VM,相信所有Java程序员都知道,它是Sun JDK和OpenJDK中所带的虚拟机,也是目前使用范围最广的Java虚拟机。
但不一定所有人都知道的是,这个目前看起来“血统纯正”的虚拟机在最初并非由Sun公司开发,而是由一家名为“Longview Technologies”的小公司设计的;
甚至这个虚拟机最初并非是为Java语言而开发的,它来源于Strongtalk VM,
而这款虚拟机中相当多的技术又是来源于一款支持Self语言实现“达到C语言50%以上的执行效率”的目标而设计的虚拟机,
Sun公司注意到了这款虚拟机在JIT编译上有许多优秀的理念和实际效果,在1997年收购了Longview Technologies公司,从而获得了HotSpot VM。

HotSpot VM既继承了Sun之前两款商用虚拟机的优点(如前面提到的准确式内存管理),也有许多自己新的技术优势,
如它名称中的HotSpot指的就是它的热点代码探测技术(其实两个VM基本上是同时期的独立产品,HotSpot还稍早一些,HotSpot一开始就是准确式GC,
而Exact VM之中也有与HotSpot几乎一样的热点探测。
为了Exact VM和HotSpot VM哪个成为Sun主要支持的VM产品,在Sun公司内部还有过争论,HotSpot打败Exact并不能算技术上的胜利),
HotSpot VM的热点代码探测能力可以通过执行计数器找出最具有编译价值的代码,然后通知JIT编译器以方法为单位进行编译。
如果一个方法被频繁调用,或方法中有效循环次数很多,将会分别触发标准编译和OSR(栈上替换)编译动作。
通过编译器与解释器恰当地协同工作,可以在最优化的程序响应时间与最佳执行性能中取得平衡,而且无须等待本地代码输出才能执行程序,
即时编译的时间压力也相对减小,这样有助于引入更多的代码优化技术,输出质量更高的本地代码。

在2006年的JavaOne大会上,Sun公司宣布最终会把Java开源,并在随后的一年,陆续将JDK的各个部分(其中当然也包括了HotSpot VM)在GPL协议下公开了源码,
并在此基础上建立了OpenJDK。这样,HotSpot VM便成为了Sun JDK和OpenJDK两个实现极度接近的JDK项目的共同虚拟机。

在2008年和2009年,Oracle公司分别收购了BEA公司和Sun公司,这样Oracle就同时拥有了两款优秀的Java虚拟机:JRockit VM和HotSpot VM。
Oracle公司宣布在不久的将来(大约应在发布JDK 8的时候)会完成这两款虚拟机的整合工作,使之优势互补。
整合的方式大致上是在HotSpot的基础上,移植JRockit的优秀特性,譬如使用JRockit的垃圾回收器与MissionControl服务,
使用HotSpot的JIT编译器与混合的运行时系统。

2. 64-Bit Server VM:服务器版本

3. mixed mode:混合模式,支持编译模式和解释模式。

 

转载于:https://www.cnblogs.com/chuancheng/p/11437682.html


http://www.niftyadmin.cn/n/3458657.html

相关文章

JVM学习笔记之JDK、JRE、JVM的关系(二)

JDK(Java Development Kit)是针对Java开发员的产品,是整个Java的核心,包括了Java运行环境JRE、Java工具和Java基础类库。Java Runtime Environment(JRE)是运行JAVA程序所必须的环境的集合,包含J…

开发函数计算的正确姿势——运行 Selenium Java

2019独角兽企业重金招聘Python工程师标准>>> 前言 首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况&am…

JVM学习笔记之初识JVM(三)

一、JVM在计算机中的位置 JVM调用操作系统,操作系统调用硬件,硬件反馈信息至操作系统,操作系统反馈信息至JVM 二、JVM的体系结构 JVM在执行过程中对内存的管理分为5个区域: 1.PC寄存器 2.Java虚拟机栈(JVM Stack) 3.本地方法栈(Na…

【转】协同开发中SVN使用规范试用

转自:http://www.cnblogs.com/BraveCheng/archive/2012/07/02/2573617.html 协同开发中SVN使用规范试用 目标,要求 本次svn提交规范主要针对当前项目中出现的svn管理难,开发流程控制难掌控,项目进度记录不准确等问题而提出。要求每…

学无止境·MySQL(3-2)

单表查询试题 单表题目一1、创建表2、查询出部门编号为30的所有员工3、所有销售员的姓名、编号和部门编号4、找出奖金高于工资的员工5、找出奖金高于工资60%的员工。6、 找出部门编号为10中所有经理,和部门编号为20中所有销售员的详细资料。7、找出部门编号为10中所…

爬虫-第六篇-scrapy图片爬取,请求传参,中间件,提升爬取效率

补充: 自动请求start_urls列表路径其实是执行了父类中的start_requests方法,默认为GET请求,如果想要发送POST请求,改写此方法即可. def start_requests(self):for url in self.start_urls:yield scrapy.Request(url,callbackself.parse) # LOG_FILE ./log.txt 日志文件输出,默…

小米成立AIoT战略委员会,加速落地All in AIoT战略 ...

雷锋网(公众号:雷锋网)3月7日消息,今天下午,小米集团组织部再次发布任命文件,宣布成立AIoT战略委员会。AIoT战略委员会隶属于集团技术委员会,负责促进AIoT相关业务和技术部门的协同,推动战略落地执行。 文…

二层交换

交换网络基础 交换机工作在数据链路层 ,通过MAC 地址转发数据帧 交换机在接受到一个主机的广播后,会以广播的形式从其他接口发送出去,这个过程叫做泛洪。 交换机在从广播中学习的 mac地址与对应的链接接口,写入mac表中 dis mac-a…