专注Java教育14年 全国咨询/投诉热线:444-1124-454
赢咖4LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 Java学习 所有关于Java虚拟机学习的掌握

所有关于Java虚拟机学习的掌握

更新时间:2022-02-24 16:54:57 来源:赢咖4 浏览1646次

Java虚拟机或JVM是Java运行时系统。它是一个有助于驱动Java代码的虚拟机环境。与其他编程语言不同,每当我们编译Java程序时,它永远不会生成机器码。尽管如此,Java编译器会为Java虚拟机生成字节码。

java虚拟机学习

JVM是如何工作的?

JVM允许我们同时解决可移植性和安全性问题:

1.平台独立性:

在计算机编程中,平台一词代表程序运行的环境。平台无关仅仅意味着程序可以在不同平台上轻松执行,而无需重写和重新编译。这仅是可能的。因为将Java程序转换为字节码可以更容易地在不同环境中执行程序,因为每个平台只需要实现JVM。

尽管JVM会因平台而异,但它们可以理解相同的Java字节码。这使得Java成为一种独立于平台的技术,也证明了WORA(Write Once Run Anywhere)的合理性。

2.安全:

JVM在安全方面扮演着重要的角色。JVM正在执行的Java程序也有助于使其安全,因为JVM负责执行环境,它可以包含程序并防止出现系统外部的问题。这是因为字节码已经过高度优化,字节码可以让JVM更快地运行程序。JVM还会验证字节码,以确保程序的进一步安全运行。

JVM架构:

Java虚拟机或JVM的内部架构包括:

java虚拟机学习

1.类加载器:

类加载器在运行时初始化类文件。它动态加载类并读取.Class文件并保存在方法区域中创建的字节码。它的三个主要功能是加载、链接和初始化。类加载器主要分为三种类型:

  • Bootstrap ClassLoader:Bootstrap类加载器负责加载Java.Lang.ClassLoader。它是JVM的一个重要部分,它从Rt.Jar位置加载JDK内部类。它也被称为原始类加载器。
  • Extension ClassLoader:扩展类加载器从JDK扩展库中加载类。
  • 系统类加载器:系统类加载器的主要功能是从当前设置的类路径中加载类。

2.方法区:

每个JVM都有一个方法区。方法区存储所有类级别的数据,如类名、方法、静态变量、非静态变量、字段等。

3.堆:

堆区默认存放对象数据和对应的实例变量。

4.堆栈:

将为每个单独的线程创建一个单独的运行时堆栈。创建的每个堆栈块称为堆栈帧,用于存储相应的局部变量。线程被销毁后,堆栈由JVM自动终止。

5.程序计数器寄存器:

将为每个线程创建一个单独的PC寄存器。它保存当前执行数据的数据。一旦执行停止,PC寄存器将自动更新到下一部分。

6.原生方法栈:

包含我们程序中使用的所有本机方法。

7.执行引擎:

执行引擎逐行执行字节码。它包含三个主要组件:

  • 口译员:JVM的一个非常重要的成员是解释器。解释器根据带下划线的平台指令以及运行状态转换字节码指令并执行代码。
  • 即时编译器(JIT):JIT编译器在执行期间根据需要编译代码。只有将从编译中受益的代码才被编译。剩下的代码只是解释。通过这种方式,Just-In-Time编译器提供了一种性能提升,同时也提高了解释器的效率。
  • 垃圾收集器:在Java中,用户不必担心如何销毁不再使用的对象,因为内存的释放是自动处理的。用于完成的技术是引用垃圾收集。在垃圾回收中,当一个未引用对象存在时,这个对象所要求的内存可以被另一个对象回收。

8.Java原生接口:

Java Native Interface(JNI)是一个框架,它提供了一个接口来与本地方法库交互并调用用C、C++、Assembly等语言编写的应用程序。

 以上就是赢咖4小编介绍的"所有关于Java虚拟机学习的掌握",希望对大家有帮助,如有疑问,请在线咨询,有专业老师随时为您服务。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>