JVM底层原理解析

hi ,大家好,我是极客重生的Alex,今天分享一篇JVM底层原理的文章,希望可以帮助大家了解一下语言虚拟机一些设计原理,不管你当前使用语言是C,C++,Golang,Python等,很多思想和原理是相通的,可以借鉴。

比如之前分析内核虚拟机eBPF架构:

JVM底层原理解析

Java 虚拟机 (JVM) 的工作

JVM架构

让我们了解 JVM 的架构。Java 中的 JVM 架构包含类加载器、内存区、执行引擎等。

JVM底层原理解析

函数 f1 存储在文件 a2.c 中

JVM底层原理解析

所有这些文件,即 a1.c、a2.c 和 a3.c,都被提供给编译器。其输出是相应的目标文件,即机器代码。

JVM底层原理解析

在程序运行过程中,加载程序会将 a.exe 加载到 RAM 中执行。

JVM底层原理解析

编译器将编译这三个文件,并生成 3 个对应的 .class 文件,其中包含字节码。与 C 不同,没有进行链接。Java VM 或 Java 虚拟机驻留在 RAM 上。在执行期间,使用类加载器将类文件带到 RAM 中。字节码已验证是否存在任何安全漏洞。

JVM底层原理解析

注意:JIT或即时编译器是 Java 虚拟机 (JVM) 的一部分。它同时转化具有相似功能的部分字节码。

为什么Java既是解释型语言又是编译型语言/strong>

编程语言被分类为

  • 高级语言,例如C++、Java

  • 中级语言,例如C

  • 低级语言,例如汇编

  • 最后是最低级别的机器语言。

编译器是一个程序,它把程序从一个级别转化到另外一个级别(一般是从高到低),比如把C++ 程序转化到机器码。

java编译器将高级java代码转换成字节码(也是一种机器码)。

解释器是一个程序,它把程序转化为相同等级的其他语言,比如把Java程序转换成C++。

在 Java 中,Jit生成器将字节码转换为处于相同级别的本机机器代码,因此,Java 既是编译型语言,又是解释型语言。

为什么 Java 很慢br>

Java 运行缓慢的两个主要原因是

  1. 动态链接:与 C 不同,链接是在运行时完成的,每次程序在 Java 中运行时。

  2. 运行时解释器:字节码到本地机器码的转换是在 Java 运行时完成的,这进一步减慢了速度。

但是,最新版本的 Java 在很大程度上解决了性能瓶颈。

总结

  • JVM 的完整形式是Java Virtual Machine.(Java虚拟机),Java 中的 JVM 是驱动 Java 代码的引擎,它将 Java 字节码转换为机器语言。

  • Java 中的 JVM 架构包含类加载器内存区执行引擎等。

  • 在 JVM 中,Java 代码被编译为字节码。这个字节码在不同的机器上被解释成不同的机器码。

  • JIT 代表即时编译器。JIT 是 Java 虚拟机 (JVM) 的一部分。它用于加快执行时间。

  • 与其他编译器机器相比,Java 中的 JVM 执行速度可能较慢。

– END –


看完一键三连在看转发,点赞

是对文章最大的赞赏,极客重生感谢你 JVM底层原理解析

文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览91536 人正在系统学习中

来源:极客重生

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年6月4日
下一篇 2021年6月4日

相关推荐