《深入理解java虚拟机》笔记

1. java技术体系

Kotlin、Clojure、JRuby、Groovy等运行于Java虚拟机上的编程语言及其相关的程序
都属于Java技术体系中的一员。
java体系组成组成:Java程序设计语言、各种硬件平台上的Java虚拟机实现、Class文件格式
、Java类库API、来自商业机构和开源社区的第三方Java类库。
JDK:把Java程序设计语言、Java虚拟机、Java类库这三部分统称为JDK
JRE:可以把Java类库API中的Java SE API子集 [3] 和Java虚拟机
在这里插入图片描述
产品线:Java Card、Java ME、JavaSE、JavaEE(在JDK 10以后被Oracle放弃,捐献给Eclipse基金会管理,此后被称为Jakarta EE)
JCP:Java Community Process,就是人们常说的“Java社区”
Java从1.5版本开始,官方在正式文档与宣传上已经不再使用类似“JDK 1.5”的命名,只有程序员内部使用的开发版本号(Developer Version,例如java-version的输出)中才继续沿用1.5、1.6、1.7这样的版本号,而公开版本号(Product Version)则是改为JDK 5.0、JDK 6、JDK 7的命名方式,JDK 5.0中“.0”的后缀从JDK 6起也被移除掉,本书为了行文统一,同样以JDK 5来指代JDK 5.0。


2.Java虚拟机

Classic VM:JDK1.0,只能使用纯解释器方式来执行Java代码,如果要使用即时编译器那
就必须进行外挂。
Exact VM:准确式内存管理(Exact Memory Management,也可以叫Non-Con-
servative/Accurate Memory Management)而得名。
HotSpot VM:它是Sun/OracleJDK和OpenJDK中的默认Java虚拟机,也是目前使用范围最广的Java虚拟机。在1997年收购了Longview Technologies公司,从而获得了HotSpot虚拟机。HotSpot虚拟机的热点代码探测能力可以通过执行计数器
找出最具有编译价值的代码,然后通知即时编译器以方法为单位进行编译。如果一个方法被频繁调用,或方法中有效循环次数很多,将会分别触发标准即时编译和栈上替换编译(On-StackReplacement,OSR)行为 [1] 。通过编译器与解释器恰当地协同工作,可以在最优化的程序响应时间与最佳执行性能中取得平衡,而且无须等待本地代码输出才能执行程序,即时编译的时间压力也相对减小,这样有助于引入更复杂的代码优化技术,输出质量更高的本地代码。
Mobile/Embedded VM:JAVAME产品线,Oracle公司在Java ME这条产品线上的虚拟机名为CDC-HI(C Virtual Machine,CVM)和CLDC-HI(Monty VM)。目前CLDC中活得最好的产品反而是原本早该被CLDC-HI淘汰的KVM,国内的老人手机和出口到经济欠发达国家的功能手机(Feature Phone)还在广泛使用这种更加简单、资源消耗也更小的上一代Java ME虚拟机。
BEA JRockit/IBM J9 VM:它们分别是BEA System公司的JRockit与IBM公司的IBM J9。
BEA Liquid VM/Azul VM
Apache Harmony/Google Android Dalvik VM
Microsoft JVM
Graal VM:2018年4月,从它的口号“RunPrograms Faster Anywhere”就能感觉到一颗蓬勃的野心,这句话显然是与1995年Java刚诞生时的“WriteOnce,Run Anywhere”在遥相呼应。这是一个在HotSpot虚拟机基础上增强而成的跨语言全栈虚拟机,可以作为“任何语言”的运行平台使用,这里“任何语言”包括了Java、Scala、Groovy、Kotlin等基于Java虚拟机之上的语言,还包括了C、C++、Rust等基于LLVM的语言,同时支持其他像JavaScript、Ruby、Python和R语言等。Graal VM可以无额外开销地混合使用这些编程语言,支持不同语言中混用对方的接口和对象,也能够支持这些语言使用已经编写好的本地库文件。
使用-XX:+UnlockExperimentalVMOptions-XX:+UseJVMCICompiler参数来启用Graal编译器。
Substrate VM:Substrate VM是在Graal VM 0.20版本里新出现的一个极小型的运行时环境,包括了独立的异常处理、同步调度、线程管
理、内存管理(垃圾收集)和JNI访问等组件,目标是代替HotSpot用来支持提前编译后的程序执行。它还包含了一个本地镜像的构造器(Native Image Generator),用于为用户程序建立基于Substrate VM的本地运行时镜像。Substrate VM带来的好处是能显著降低内存占用及启动时间,由于HotSpot本身就会有一定的内存消耗(通常约几十MB)。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值