1、了解JVM
1、JVM、JRE、JDK
JVM:是可以将要运行的程序编译成机器语言并去执行的一个平台,具有跨语言、跨平台的特性,运行时需要依赖JRE中的类库
JRE:包含了JVM以及代码运行时的类库,时Java程序运行时的环境
JDK:Java语言开发的工具包,是整个Java开发的核心,包含了JRE、Java工具和Java基础类库
跨语言,也可以称为语言无关性,不仅时Java语言编写的程序,其他语言编写的程序编译之后也可以在JVM上运行,因为JVM不是来识别语言的,而是识别字节码,通过把字节码编译成机器语言去运行的
跨平台,同一个类在不同系统上的JVM上去运行,其结果是一样的
2、常见的JVM
Hotspot:目前使用的最多的 Java 虚拟机。在命令行 java –version。它会输出你现在使用的虚拟机的名字、版本等信息、执行模式
Jrocket:原来属于BEA 公司,曾号称世界上最快的 JVM,后被 Oracle 公司收购,合并于 Hotspot
J9: IBM 有自己的 java 虚拟机实现,它的名字叫做 J9. 主要是用在 IBM 产品(IBM WebSphere 和 IBM 的 AIX 平台上)
TaobaoVM: 只有一定体量、一定规模的厂商才会开发自己的虚拟机,比如淘宝有自己的 VM,它实际上是 Hotspot 的定制版,专门为淘宝准备的,阿里、天
猫都是用的这款虚拟机
LiquidVM: 它是一个针对硬件的虚拟机,它下面是没有操作系统的(不是 Linux 也不是 windows),下面直接就是硬件,运行效率比较高
zing: 它属于 zual 这家公司,非常牛,是一个商业产品,很贵!它的垃圾回收速度非常快(1 毫秒之内),是业界标杆。它的一个垃圾回收的算法后来被Hotspot 吸收才有了现在的 ZGC