我在大学学的是java云计算与大数据方向,作为一名java程序猿,我认为首先要深度学习的就是JVM。
什么是JVM
关于JVM的相关概念已经有很多大佬做过详细的讲解了,我就不多赘述了。这里放上社区大佬的文章Java程序员-张凯
什么是JVM?(https://blog.youkuaiyun.com/qq_41701956/article/details/80020103)
但是对于许多刚入门学习java的小白来说这类深奥的文章看得头都大了也看不懂它到底是个什么,我来说一下我自己的理解已经最近对JVM的学习内容。
JVM是Java Virtual Machine(Java虚拟机)的缩写可以它理解为一台电脑,拥有自己的CPU、内存、指令集(汇编)、区、栈、块等。这里引用《JVM详解——什么是JVM、JVM优点》这篇文章里的图解,可以看出JVM自身的物理结构。其中包含ClassLoader类加载器、java类库、字节码解释器、JIT即时编译器和执行引擎。
JVM与Java无关
JVM被称作跨语言的平台。
就类似像java被称作跨平台的语言一样,能在JVM上执行的包括java、Scala、groovy等多达100多种语言,而且不受限于操作系统。那这是为什么呢?
简单地说JVM就是一种规范,不论是什么语言,只要能够编译成class文件,那么就能在JVM上执行。
这是Oracle jdk官方文档链接,也是对JVM最权威的解释https://docs.oracle.com/javase/specs/index.html。
对JVM有深入研究想法的同学可以去自己查文档。
常见的JVM实现
- Hotspot
· oracle官方
· 通过cmd:java -version查看
- Jrockit
· BEA,曾号称世界上最快的JVM
· 被oracle收购,与hotspot合并
- J9 - IBM
- Microsoft VM
- TaobaoVM
· hotspot深度定制版
- LiquidVM
· 直接针对硬件
- azul zing
· 最新垃圾回收的业界标杆
· www.azul.com
· 价格高昂
JDK JRE 和 JVM 的关系
他们的包含关系如下图,简单地讲JVM是用于试行,JRE用于编译,而JDK用于开发。
本文为我对学习JVM概念理解的分享,是适用于学习交流,有不赞同点请评论指出。