千家信息网

Java虚拟机的体系结构和内存模型是什么

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章主要介绍"Java虚拟机的体系结构和内存模型是什么",在日常操作中,相信很多人在Java虚拟机的体系结构和内存模型是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家
千家信息网最后更新 2026年11月04日Java虚拟机的体系结构和内存模型是什么

这篇文章主要介绍"Java虚拟机的体系结构和内存模型是什么",在日常操作中,相信很多人在Java虚拟机的体系结构和内存模型是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Java虚拟机的体系结构和内存模型是什么"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

Java 虚拟机体系结构

类装载子系统

Java虚拟机有两种类装载器,分别是启动类装载器和用户自定义装载器。

通类装载子系统通过类的全限定名(包名和类名,网络装载还包括 URL)将 Class 装载进运行时数据区。对于每一个被装载的类型,Java虚拟机都会创建一个java.lang.Class类的实例来代表该类型,该实例被放在内存中的堆 区,而装载的类型信息则位于方法区,这一点和所有其他对象都是一样的。

类装载子系统在装载一个类型前,除了要定位和导入对应的二进制class文件外,还要验证导入类的正确性,为类变量分配并初始化内存,以及解析符号引用为直接引用,这些动作严格按照以下顺序进行:

1)装载——查找并装载类型的二进制数据;

2)连接——执行验证,准备以及解析(可选)

3)验证 确保被导入类型的正确性

4)准备 为类变量分配内存,并将其初始化为默认值

5)解析 把类型中的符号引用转换为直接应用

方法区

对于每一个被类装载子系统装载的类型,虚拟机都会保存下列数据到方法区:

  • 类型的全限定名

  • 类型超类的全限定名(java.lang.Object没有超类)

  • 类型是类类型还是接口类型

  • 类型的访问修饰符

  • 任何直接超接口的全限定名有序列表

除了上述基本类型信息,还将保存如下信息:

  • 类型的常量池

  • 字段信息(包括字段名、字段类型、字段修饰符)

  • 方法信息(包括方法名、返回类型、参数的数量和类型、方法修饰符,如果方法不是抽象和本地的,还将保存方法的字节码、操作数栈和该方法栈帧中的局部变量区的大小和异常表)

  • 常量以外的所有类变量(其实就是类的静态变量,因为静态变量是所有实例共享的,且与类型直接相关,所以他们是类一级的变量,作为类的成员被保存在方法区)

一个到类ClassLoader的引用

//返回的就是刚才保存的ClassLoader引用
String.class.getClassLoader();

一个到Class类的引用

//将返回刚才保存的Class类的引用
String.class;

注意,方法区也是可以被垃圾回收器回收的。

堆

Java程序在运行时创建的所有类实例或数组都放在同一个堆中,而每一个Java虚拟机也是有一个对空间,所有线程共享一个堆(这就是一个多线程的Java程序会产生对象访问的同步问题的原因了)。

由于每一种Java虚拟机都有对虚拟机规范的不同实现,所以我们可能不知道每一种Java虚拟机在堆中是以何种形式表示对象实例的,不过我们可以通过下面这可能的实现来一窥端倪:

程序计数器

对于运行中的Java程序而言,每一个线程都有自己的PC(程序计数器)寄存器,它是在该线程启动时创建的,大小为一个字长,用来保存需要被执行的下一行代码的位置。

Java栈

每一个线程都有一个Java栈,以栈帧为单位保存线程的运行状态。虚拟机对Java栈的操作有两种:压栈和出栈,二者都已帧为单位。栈帧保存了传入参数、局部变量、中间运算结果等数据,在方法完成时被弹出,然后释放。

看一下两个局部变量相加时栈帧的内存快照

本地方法栈

这是 Java 调用操作系统本地库的地方,用来实现 JNI(Java Native Interface,Java 本地接口)

执行引擎

Java虚拟机的核心,控制装入 Java 字节码并解析;对于运行中的Java程序而言,每一个线程都是一个独立的虚拟机执行引擎的实例,从线程生命周期的开始到结束,他要么在执行字节码,要么在执行本地方法。

本地接口

连接了本地方法栈和操作系统库。

注:文中所有提到"Java虚拟机"的地方都是指"JavaEE和JavaSE平台的Java虚拟机规范"。

到此,关于"Java虚拟机的体系结构和内存模型是什么"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

类型 方法 装载 变量 内存 线程 实例 程序 体系 体系结构 结构 信息 运行 模型 子系统 字段 接口 数据 学习 字节 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 博彦科技互联网金融 南京欣网互联网络科技有限公司 广州紫鲸互联网科技有限公司 麻工互联网科技 广州互联网科技公司 青岛互联网科技公司 广州紫鲸互联网科技 美国互联网前沿科技 华中科技有哪些互联网大佬 玉溪互联网科技怎么选 消费医药和互联网科技 内蒙古九一互联网科技 深圳互联网科技的发展 中天科技中国工业互联网 互联网金融运营模式中的金融科技 美国五大互联网科技公司市值多少 悟空问答互联网科技 长沙易易互联网科技有限公司 广东猫王互联网科技有限公司电话 互联网科技自媒体灵感 互联网科技金融 互联网络科技有限公司 新浪科技互联网 北京大学互联网科技怎么样 广州恒生互联网科技有限 宁夏众和广鑫互联网科技有限公司 智腾互联网科技有限公司 工业互联网展湾科技股份有限公司 工业互联网山东科技大学 2021互联网科技公司排名
0