目录
java 是解释执行的还是编译执行的
其实是混合的。
对常用的代码会即时编译到本地。下次运行的时候就不需要通过解释器一句一句,执行引擎可以直接调用操作系统。
不是所有代码都会jit即时编译的。
java是个跨语言平台, 是因为jvm的原因。
jvm上跑的语言特别多,应该是100多种。
jvm虚拟机本身就是个规范,虚构出来的一台计算机
- 字节码指令集(汇编语言)
- 内存管理:栈 堆 方法区等
任何语言都会编译成class 如果不是编译也是会生成二进制class 然后再jvm执行
jvm和java无关。
既然是规范 也就类似于接口 那么就会有各种各样的实现。
JVM实现
HotSpot
- oracle官方,我们做实验用的jvm
- java -version
Jrockit
- BEA,曾经号称世界上最快jvm BEA是创始人三个人的首字母
- 被oracle收购,合并于HotSpot
J9 -IBM
Microsoft VM
TaobaoVM
- hostspot深度定制版
LiquidVM
- 直接针对硬件
zuil zing 土豪才用的起的商业版本 特点就是快 特别是垃圾回收 1毫秒以内 ZGC就是参考这个回收
<