JVM(JAVA Virtual Machine)Java虚拟机

发布时间 2023-09-08 17:35:24作者: 风陵南

JVM的跨平台性

一次编写,到处运行

JVM将字节码文件编译成对应操作系统的机器码

JVM的语言无关性

JVM的解释执行

字节码文件会按照顺序执行 ,字节码文件先被加载到jvm中,执行引擎根据字节码指令逐行解释成本地机器码

JIT——即时编译器

逐行解释代码——运行速度比较慢

jvm还有一种另外的情况 (是否为热点代码)

  • 热点代码:某方法调用了一万次,或者某个循环调用了一万多次,此时jvm会将这些代码判定为热点代码

若为热点代码,则会通过JIT(即时编译器)直接将热点代码翻译成本地机器码指令

对象是否一定在堆中创建

  • 几乎所有对象都在堆中创建

如果new对象的代码为非热点代码,则一定在堆中创建

如果new对象的代码为热点代码,则会经过JIT(即时编译器)从而出现不在堆中创建的情况,JIT即时编译器中还有优化技术,比如判断new出来的对象是否可以逃逸出出方法或者线程,如果不能,再判断jvm是否开启标量替换,如果jvm开启了标量替换则在栈中创建该对象

标量替换:堆里面的对象,最重要的是它的成员变量,这些成员变量能否在栈中进行替换,如果能则可以标量替换