• 技术文章 >java >java基础

    Java字节码中jvm的使用

    小妮浅浅小妮浅浅2021-02-22 11:01:23原创3339

    要想使Java运行,我们可以设计一个面向Java语言特性的虚拟机,并通过编译器将Java程序转换为它可以识别的指令序列,也称为Java字节码。由于Java字节码指令的操作码被固定为一个字节,所以它的名字就这样命名了。本篇要带来的是Java字节码中jvm的使用,主要分为两个操作视角,一起来看看具体内容吧。

    1、虚拟机视角

    在执行Java代码时,首先需要将编译后的class文件装入Java虚拟机。装入的Java类将存储在方法区(MethodArea)中。虚拟机会在实际运行时执行方法区内的代码。JavaVirtualMachines将堆和栈分割为内存,以存储运行时数据。JavaVirtualProfessional将栈细分为面向Java方法的Java方法栈、面向本地方法(用C++写的native方法)的本地方法栈和存放各个线程执行位置的PC寄存器。

    该调用将进入Java方法,而Java虚拟机会将在当前线程的Java方法栈中生成用于存储本地变量和字节码操作数的栈帧。该栈帧的大小是事先计算好的,并且Java虚拟机不需要连续地在内存空间中分布栈帧。Java虚拟机在退出当前执行的方法时,无论是正常还是异常,都将弹出当前线程的当前栈帧,并放弃该帧。

    2、硬件视角

    Java字节代码不能直接执行,因此Java虚拟机需要将字节代码翻译成机器代码。在HotSpot中,翻译过程有两种形式

    1、是说明执行,把字节代码翻译成机器代码执行

    2、是即时编译(Just-In-Timecompilation、JIT),将一种方法包含的所有字节代码编译成机器代码后执行。

    前者的优势是不需要等待编译,后者的优势是实际运行速度更快。

    以上就是Java字节码中jvm的使用,大家可以结合字节码和虚拟机的知识点,对本篇的内容进行理解。对于不懂的地方,可以反复的查阅和研究。

    专题推荐:java字节码 jvm
    上一篇:Java虚拟机的发展变化 下一篇:java中jvm关闭的几种情况

    相关文章推荐

    • java一维数组的深拷贝方式• java ThreadLocal的对象存储和获取• Java虚拟机的发展变化• Java之jvm的执行程序过程• java数组中如何对内存进行回收?

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网