hi ,大家好,我是极客重生的Alex,今天分享一篇JVM底层原理的文章,希望可以帮助大家了解一下语言虚拟机一些设计原理,不管你当前使用语言是C,C++,Golang,Python等,很多思想和原理是相通的,可以借鉴。
比如之前分析内核虚拟机eBPF架构:
Java 虚拟机 (JVM) 的工作
JVM架构
让我们了解 JVM 的架构。Java 中的 JVM 架构包含类加载器、内存区、执行引擎等。
函数 f1 存储在文件 a2.c 中
所有这些文件,即 a1.c、a2.c 和 a3.c,都被提供给编译器。其输出是相应的目标文件,即机器代码。
在程序运行过程中,加载程序会将 a.exe 加载到 RAM 中执行。
编译器将编译这三个文件,并生成 3 个对应的 .class 文件,其中包含字节码。与 C 不同,没有进行链接。Java VM 或 Java 虚拟机驻留在 RAM 上。在执行期间,使用类加载器将类文件带到 RAM 中。字节码已验证是否存在任何安全漏洞。
注意:JIT或即时编译器是 Java 虚拟机 (JVM) 的一部分。它同时转化具有相似功能的部分字节码。
为什么Java既是解释型语言又是编译型语言/strong>
编程语言被分类为
-
高级语言,例如C++、Java
-
中级语言,例如C
-
低级语言,例如汇编
-
最后是最低级别的机器语言。
编译器是一个程序,它把程序从一个级别转化到另外一个级别(一般是从高到低),比如把C++ 程序转化到机器码。
java编译器将高级java代码转换成字节码(也是一种机器码)。
解释器是一个程序,它把程序转化为相同等级的其他语言,比如把Java程序转换成C++。
在 Java 中,Jit生成器将字节码转换为处于相同级别的本机机器代码,因此,Java 既是编译型语言,又是解释型语言。
为什么 Java 很慢br>
Java 运行缓慢的两个主要原因是
-
动态链接:与 C 不同,链接是在运行时完成的,每次程序在 Java 中运行时。
-
运行时解释器:字节码到本地机器码的转换是在 Java 运行时完成的,这进一步减慢了速度。
但是,最新版本的 Java 在很大程度上解决了性能瓶颈。
总结:
-
JVM 的完整形式是Java Virtual Machine.(Java虚拟机),Java 中的 JVM 是驱动 Java 代码的引擎,它将 Java 字节码转换为机器语言。
-
Java 中的 JVM 架构包含类加载器、内存区、执行引擎等。
-
在 JVM 中,Java 代码被编译为字节码。这个字节码在不同的机器上被解释成不同的机器码。
-
JIT 代表即时编译器。JIT 是 Java 虚拟机 (JVM) 的一部分。它用于加快执行时间。
-
与其他编译器机器相比,Java 中的 JVM 执行速度可能较慢。
– END –
看完一键三连在看,转发,点赞
文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览91536 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!