欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 金融 > JVM虚拟机:内存结构、垃圾回收、性能优化

JVM虚拟机:内存结构、垃圾回收、性能优化

2025/6/8 12:58:36 来源:https://blog.csdn.net/pan_junbiao/article/details/148450283  浏览:    关键词:JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介

Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以在多种平台上不加修改地运行‌。

1.1 JVM 的基本组成

JVM 主要由以下几个部分组成:

  1. 类加载器‌:负责将 .class 文件加载到内存中。
  2. ‌执行引擎‌:负责解释执行字节码或通过即时编译(JIT)将其转换为机器码。
  3. ‌运行时数据区‌:包括堆、栈、方法区和程序计数器等,用于存储程序运行时的数据和状态。
  4. ‌本地接口‌:用于融合不同的编程语言,虽然使用较少,但在需要与硬件交互时仍然重要‌。

1.2 JVM 的运行流程

  1. 编译‌:Java 源代码通过 javac 编译器编译成字节码(.class文件)。
  2. ‌类加载‌:类加载器将字节码文件加载到 JVM 的内存中。
  3. ‌执行‌:执行引擎解释或编译字节码,并提交操作系统执行。
  4. ‌垃圾回收‌:自动管理内存,防止内存泄漏和溢出‌。

1.3 JVM 的跨平台特性

JVM 的跨平台特性使得 Java 程序可以在任何支持 JVM 的操作系统上运行,实现了“一次编写,到处运行”(Write Once, Run Anywhere, WORA)的目标。这是通过 JVM 屏蔽底层硬件和操作系统的差异,提供统一的字节码规范来实现的‌。

2、JVM 的内存结构

JVM 在执行 Java 程序的时候,为了便于管理,会把它所管理的内存划分为多个不同区域。

JVM 的内存结果如下图:

2.1 字节码文件(class 文件)

字节码文件(class 文件)是 Java 程序编译后生成的中间代码,这些中间代码将会被 JVM 解析并执行。字节码文件是 Java 源代码(.java)编译后生成的中间代码文件(.class),采用二进制格式存储,包含 JVM 可执行的指令集。与机器码不同,字节码是平台无关的中间表示,需由 JVM 解释或即时编译(JIT)为机器码执行。

2.2 类加载器(ClassLoader)

类加载器子系统负责把 class 文件转载到内存中,供虚拟机执行。

2.3 方法区(Method Area)

方法区用来存储被虚拟机加载的类信息、常量、静态变量、编译器编译后的代码等数据。在类加载器加载 class 文件的时候,这些信息将会被提起出来,并存储到方法区中。由于这个区域是所有线程共享的区域,因此,它被设计为线程安全的。方法区可以被看出 JVM 的一个规范,在 HotSpor 中,方法区是用 Perm 区来实现的方法区。

2.4 ‌堆(Heap)

堆是虚拟机启动的时候创建的被所有线程共享的区域。这块区域只要用来存储对象的实例,通过 new 操作创建出来的对象的实例都存储在堆空间中,因此,堆就成为垃圾回收器管理的重点区域。

2.5 程序计数器(Program Counter Register)

程序计数器用于记录当前线程执行字节码的指令地址(行号指示器&#x

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词