当前位置: 移动技术网 > IT编程>开发语言>Java > 深入jvm 01. java代码是如何运行的?

深入jvm 01. java代码是如何运行的?

2020年07月17日  | 移动技术网IT编程  | 我要评论

1、为什么要用java虚拟机运行java代码?

①在虚拟机中运行,给java提供了可移植性,一旦java源码被编译为字节码,就可以在不同平台的java虚拟机上运行,称之为"一次编写,到处运行"。

②虚拟机为程序员提供了代码托管环境,它可以帮助java程序员做自动内存管理与垃圾回收相关工作,以及提供数组越界等的动态监测,让程序员更关注于代码的业务逻辑。

2、jvm怎么运行java字节码的?

首先,使用前端编译器将java源码编译为字节码文件,然后将字节码文件加载到java虚拟机中。jvm将运行时内存区域划分为5个部分:堆、方法区( jdk8以前叫永久代,jdk8开始叫元空间 )、PC寄存器、java方法栈和本地方法栈。加载后的java类存放于方法区中。实际运行时,jvm会执行方法区中的代码。

在运行过程中,每当调用一个java方法时,jvm会在当前线程的java方法栈中生成一个栈帧,用来存放局部变量表和操作数栈。当方法执行完成退出时,当前线程的当前栈帧从栈中弹出。

在硬件层面,java字节码不能直接在物理机上运行,需要jvm将字节码翻译为机器码。一般有两种翻译形式:解释执行即时编译。解释执行就是将字节码逐条翻译并执行,优势在于无需等待编译;即时编译是将一个方法的字节码编译成机器码然后再执行,优势在于实际运行速度更快。Hotspot默认使用mixed模式,综合解释执行和即时编译的优点,先解释执行字节码,对于热点代码再以方法为单位进行即时编译,下次调用该方法时,使用编译后的机器码运行。

本文地址:https://blog.csdn.net/Longstar_L/article/details/107380543

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网