欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-07-26 20:02:04
1、为什么要用java虚拟机运行java代码?①在虚拟机中运行,给java提供了可移植性,一旦java源码被编译为字节码,就可以在不同平台的java虚拟机上运行,称之为"一次编写,到处运行"。②虚拟机为程序员提供了代码托管环境,它可以帮助java程序员做自动内存管理与垃圾回收相关工作,以及提供数组越界等的动态监测,让程序员更关注于代码的业务逻辑。2、jvm怎么运行java字节码的?首先,使用前端编译器将java源码编译为字节码文件,然后将字节码文件加载到java虚拟机中。jvm将运行时内存区域划分为...

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

相关标签: java