当前位置: 首页 > article >正文

JVM解说

JVM(Java Virtual Machine) 是 Java 平台的核心组件之一,负责执行 Java 字节码(Bytecode)。

JVM 的设计使得 Java 程序具有跨平台性,即“一次编写,到处运行”(Write Once, Run Anywhere)。

JVM 负责将 Java 字节码转换为机器码,并在不同的操作系统和硬件平台上运行。

JVM 的主要功能

1.加载和验证字节码

  • JVM 从类路径(classpath)中加载 .class 文件,并验证这些字节码是否符合 Java 语言规范和安全规范。

2.内存管理

  • JVM 负责管理 Java 程序的内存,包括堆(Heap)、栈(Stack)、方法区(Method Area)等。
  • 垃圾回收(Garbage Collection):JVM 自动回收不再使用的对象,释放内存。

3.执行字节码

  • JVM 将 Java 字节码解释或编译为机器码,并在目标平台上执行。

4.安全性

  • JVM 提供了一个安全沙箱(Sandbox),限制了 Java 程序对系统资源的访问,确保程序的安全性。

5.多线程支持

  • JVM 支持多线程执行,Java 程序可以创建多个线程并发执行。

JVM 的架构

JVM 的架构可以分为以下几个主要部分:

1.类加载器(Class Loader)

  • 负责加载 Java 类文件(.class 文件)到 JVM 中。类加载器分为以下几种:
    • Bootstrap Class Loader:加载核心 Java 类库(如 rt.jar)。
    • Extension Class Loader:加载扩展类库。
    • Application Class Loader:加载应用程序类。

2.运行时数据区(Runtime Data Area)

  • 堆(Heap):存储对象实例,所有线程共享。
  • 栈(Stack):每个线程都有一个独立的栈,存储局部变量、方法调用等信息。
  • 方法区(Method Area):存储类的元数据,如方法、字段、常量池等。
  • 程序计数器(Program Counter Register):每个线程都有一个程序计数器,指向当前执行的字节码指令。
  • 本地方法栈(Native Method Stack):存储本地方法(Native Method)的调用信息。

3.执行引擎(Execution Engine)

  • 解释器(Interpreter):逐条解释执行字节码。
  • 即时编译器(JIT Compiler):将热点代码(Hotspot)编译成本地机器码,提高执行效率。
  • 垃圾回收器(Garbage Collector):自动回收不再使用的对象,释放内存。

4.本地方法接口(Native Method Interface)

  • 允许 Java 程序调用本地方法(Native Method),即用其他语言(如 C/C++)编写的代码。

JVM 的内存管理

JVM 的内存管理是自动化的,主要通过垃圾回收器(Garbage Collector)来实现。

垃圾回收器负责回收不再使用的对象,释放内存。

以下是 JVM 内存管理的一些关键概念:

1.堆(Heap)

  • 存储对象实例,所有线程共享。
  • 分为年轻代(Young Generation)和老年代(Old Generation)。
  • 年轻代分为 Eden 区和两个 Survivor 区。

2.垃圾回收算法

  • 标记-清除(Mark-Sweep)
    • 标记所有存活的对象,然后清除未标记的对象。
  • 复制(Copying)
    • 将存活的对象复制到另一个区域,然后清除原区域。
  • 标记-整理(Mark-Compact)
    • 标记所有存活的对象,然后将它们移动到内存的一端,最后清除边界之外的区域。

3.垃圾回收器类型

  • Serial GC:单线程垃圾回收器,适用于小型应用。
  • Parallel GC:多线程垃圾回收器,适用于多核处理器。
  • CMS(Concurrent Mark Sweep) GC:并发标记清除垃圾回收器,适用于需要低停顿时间的应用。
  • G1(Garbage-First) GC:分代垃圾回收器,适用于大内存应用。

JVM 的安全性

JVM 提供了一个安全沙箱(Sandbox),限制了 Java 程序对系统资源的访问,确保程序的安全性。以下是 JVM 的一些安全机制:

1.字节码验证

  • JVM 在加载类文件时,会验证字节码是否符合 Java 语言规范和安全规范。

2.类加载器

  • 类加载器通过不同的命名空间和访问控制机制,防止恶意代码加载和执行。

3.安全管理器(Security Manager)

  • 安全管理器可以限制 Java 程序对系统资源的访问,如文件、网络等。

4.代码签名

  • Java 程序可以通过代码签名机制,确保代码的完整性和来源。

结论

JVM 是 Java 平台的核心组件,负责执行 Java 字节码,并提供内存管理、安全性和多线程支持等功能。

JVM 的设计使得 Java 程序具有跨平台性和安全性,是构建高性能、安全可靠的 Java 应用的关键。

联系方式:https://t.me/XMOhost26


http://www.kler.cn/a/385512.html

相关文章:

  • 系统上线后发现bug,如何回退版本?已经产生的新业务数据怎么办?
  • NoSQL数据库与关系型数据库的主要区别
  • 使用kalibr_calibration标定相机(realsense)和imu(h7min)
  • TensorRT基础知识
  • SAP_MM_SD_PP_FICO_视频课程几乎免费送
  • 同三维T610UDP-4K60 4K60 DP或HDMI或手机信号采集卡
  • 虚拟机linux7.9下安装mysql
  • Docker中创建latex和sphinx文档环境
  • Android ASM 修改 .class 文件
  • Qt的跨平台介绍
  • 【Linux】简易版shell
  • 生产环境中添加多项式特征实现:将逻辑回归应用于非线性关系
  • Linux操作系统:学习进程_了解并掌握进程的状态
  • 手机内卷下一站,AI Agent
  • java抽象类
  • SQL 注入(文件读取)
  • UE5.4 PCG 复制关卡实例
  • 线程级耗时统计工具类TimeWatcher
  • 深度学习-图像评分实验(TensorFlow框架运用、读取处理图片、模型建构)
  • 【数据结构】快慢指针探秘:理解链表与数组中的环结构
  • Leecode热题100-78.子集
  • 【AIGC探索】AI实现PPT生产全流程
  • 《Python使用sqlite3数据库》
  • Pytorch基本语法
  • 微软域名邮箱:如何设置管理烽火域名邮箱?
  • .NET6中WPF项目添加System.Windows.Forms引用