前端编译器(javac或者Eclipse JDT中的增量式编译器)把Java代码编译成字节码,字节码是可以发送给任何平台并且能在那个平台上运行的独立于平台的代码。
即时编译器(JIT compiler,just-in-timecompiler)是一个把Java的字节码(包括需要被解释的指令的程序)转换成可以直接发送给处理器(processor)的指令的程序。
JRockit VM:最初属于BEA公司,2008年被Oracle收购。它专注于服务器端应用,所以不太关注程序的启动速度,里边不包含解析器,号称是世界上最快的JVM。它提供的Mission Control服务套件,是一组以极低的开销来监控、管理和分析生产环境中的应用程序的工具。它包括三个独立的应用程序:内存泄漏监测器(Memory Leak Detector)、JVM运行时分析器(Runtime Analyzer)和管理控制台(Management Console)。
J9 VM:J9是IBM开发的一个高度模块化的JVM,在许多平台上,IBM J9 VM都只能跟IBM产品一起使用。2017年IBM发布开源的OpenJ9,并贡献给 Eclipse 基金会。
非主流JVM介绍:
Azul VM: 是Azul system 公司在Hot Spot基础上进行的改进,是运行在其公司专有的硬件上,一个Azul VM 实例,都可以管理数十个CPU以及数百G的内存资源,而且通过巨大内存范围内,实现可控的GC事件以及垃圾回收。
Graal VM: 是一个高性能的通用虚拟机,可以运行使用JavaScript,Python 3,Ruby,R,基于JVM的语言以及基于LLVM的语言开发的应用。GraalVM消除了编程语言之间的隔离性,并且通过共享运行时增强了他们的互操作性。它可以独立运行,也可以运行在OpenJDK,Node.js,Oracle,MySQL等环境中。它的口号“Run Programs Faster Anywhere”。
HotSpot的整体架构图如图所示为HotSpot的架构简图,接下来我们会按照该图的执行顺序说一下JVM里边的具体细节,如果你有不同的意见或者更好的idea,欢迎联系阿Q:可以关注gzh“阿Q说代码”,也可以加阿Q好友qingqing-4132,阿Q期待你的到来!
后台留言领取java干货资料:学习笔记与大厂面试题