最近在学习java并发,有些地方涉及到java虚拟机的知识,学习java这么久了,其实还没了解过Java虚拟机,这有点说不过去,所以先来学学习下java虚拟机的基础知识。
java虚拟机的概述
oracle官方定义的java技术体系包含以下几种:
java程序设计语言
各种平台的java虚拟机
Class文件格式
java API类库
第三方java类库
我们通常所说的JDK(Java Development Kit),他是java开发的最小环境,主要就包含java程序语言设计,java虚拟机与java API类库。而JRE(Java Runtime Environment),它是java程序运行的标准环境,它其实即使由java API的java SE API子集和java虚拟机组成。
由此我们可以看到java虚拟机在java中式极其重要的。我么可以把java虚拟机看作一个抽象的计算机,他有各种指令集和运行时数据区域。
近期小编从一份阿里P8大神手中要到了一份最新总结的Java虚拟机学习指南下面直接给大家展示出来:
内容总览:
java虚拟机家族
sun公司发布了许多种虚拟机,这里我们只学习目前比较主流的存活的虚拟机。
HotSpot VM
Oracle JDK 和Open JDK中自带的虚拟机,是最主流和使用最广泛的java虚拟机。一般介绍java虚拟机的文章不作特殊说明,大部分都是介绍HotSpot VM的。HotSpot VM其实不是sun公司开发的,而是一家叫Longview technologies 的公司开发,在1997年被sun公司收购,而sun公司又在2009年被oracle收购
J9 VM
J9 VM 是IBM开发的VM,目前是其主力发展的Java虚拟机。J9 VM的市场定位和HotSpot VM接近,它是一款设计上从服务端到桌面应用再到嵌入式都考虑到的多用途虚拟机,目前J9 VM的性能水平大致跟HotSpot VM是一个档次的
Zing VM
以Oracle的HotSpot VM为基础,改进了许多会影响延迟的细节。最大的三个卖点是:
1.低延迟,“无暂停”的C4 GC,GC带来的暂停可以控制在10ms以下的级别,支持的Java堆大小可以到1TB;
2.启动后快速预热功能。
3.可管理性:零开销、可在生产环境全时开启的、整合在JVM内的监控工具Zing Vision。