简介
Java是一门可以跨平台的语言,但是Java本身是不可以实现跨平台的,需要JVM实现跨平台。javac编译好后的class文件,在Windows、Linux、Mac等系统上,只要该系统安装对应的Java虚拟机,class文件都可以运行。达到 ”一次编译,到处运行” 的效果。
什么是JVM
JVM是可以运行在Java代码的虚拟的计算机,既然是虚拟的计算机,当然也包含自己的CPU、字节码指令集、寄存器、栈、垃圾回收、堆和存储方法域,我们可以理解成JVM自己就是一套操作系统。
Java从编译到执行
Virtual Machine是物理机器的软件实现。Java是用在VM上运行的WORA(Write Once Run Anywhere)概念而开发的。编译器将Java文件编译为Java .class文件,然后将.class文件输入到JVM中,JVM会加载并执行类文件,如下图所示:
1、Java是跨平台的语言
意思是说程序员写代码的时候只需要写一次代码,javac编译也只编译一次,但是可以在windows上运行,也可以把打好的包放到linux或者macos上运行。
2、jvm与Java无关
任何语言只要你能编译成class就可以编译在JVM上
二、Jrockit
jrockit前身是BA jrockit,后被oracle收购,并免费发布,但并不开源。
jrockit可以看做是兼容标准的JDK基础上的JVM,同原有的JVM相比,jrockit声称在速度上有显著的提高(甚至超过70%),jrockit在速度上的优势使其应用在时间敏感的领域内,如军事,电信,控制等,这也得益于其针对不同处理器架构所做的优化,曾经 称是世界上最快的JVM
三、J9
J9 是一个IBM推出的Java虚拟机和类库,J9在IBM的从移动设备到企业解决方案中广泛的被使用
四、Microsoft VM
来自于微软的JVM
五、TaobaoVM
hotspot深度定制版,除了在性能优化方面下足了功夫,TaobaoVM还在HotSpot的基础之上大幅度扩充了一些特定的增强实现。比如创新的GCIH(GC invisible heap)技术实现off-heap,这样一来就可以将生命周期较长的Java对象从heap中移至heap之外,并且GC不能管理GCIH内部的Java对象,这样做最大的好处就是降低了GC的回收平率以及提升了GC的回收效率,并且GCIH中的对象还能够在多个Java虚拟机进程中实现共享。其他扩充技术还有利用PMU hardware的Java profiling tool和诊断协助功能等。
据说淘宝里面大概有十个人能够手写TaobaoVM,都是P9 P10级别的
六、LiquidVM
直接针对于硬件
七、azul zing
最新垃圾回收的业界标杆,性能极高,但是这个是收费的,并且只有土豪才用的起。
官 :www.azul.com
JDK JRE JVM
小结
今天的JVM知识点就讲完了,有疑问的小伙伴可以留言或评论
怕什么真理无穷,进一步有进一步的欢喜,我是牧小农,大家加油!!!
文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览93761 人正在系统学习中 牧小农
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!