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

JVM的位置和JVM的结构体系

JVM的位置

JVM是在操作系统上面进行跑,jvm被JRE包含在里面,jvm上面跑的就是java程序。

从图中可以清晰看到 JVM(Java Virtual Machine,Java 虚拟机 ) 的位置:

它处于 JRE(Java Runtime Environment,Java 运行时环境 ) 这一层,是 JRE 的核心组成部分。整体架构里,JVM 在应用程序(图中的多个 “A” )下方,借助 JRE 承接应用程序的运行需求;同时,JVM 位于操作系统(Windows、Linux、Mac 等 )之上,通过操作系统与底层硬件体系(Intel、Spac 等 )交互,起到 “中间桥梁” 作用 —— 让 Java 程序能在不同系统、硬件上,借助 JVM 实现跨平台运行 。简单说,JVM 嵌在 JRE 层,上连应用、下接操作系统,是 Java 程序运行的 “虚拟环境” 核心 。

JVM的体系结构

JVM(Java Virtual Machine,Java 虚拟机 )体系结构主要包含以下关键部分,结合图来看:

1. 类加载子系统(Class Loader)

  • 作用:负责加载 .class 文件(由 Java 源码编译生成),把字节码数据装入 JVM ,并进行校验、准备等操作,将类数据放到方法区 ,让后续执行引擎能使用。

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

是 JVM 执行 Java 程序时管理内存的区域,细分为:

  • 方法区(Method Area):存储类的元数据(如类信息、常量、静态变量等 ),供整个程序共享,不同 JVM 实现对其称呼可能有差异(如 HotSpot 里的 “永久代” 是方法区的一种实现,不过现在多用元空间 )。

  • Java 栈(Java Stack):也叫虚拟机栈,线程私有。每个方法执行时会创建栈帧,用于存储局部变量、操作数栈、方法出口等信息,方法调用和返回对应栈帧的入栈、出栈。

  • 本地方法栈(Native Method Stack):和 Java 栈类似,但为本地方法(用 native 修饰、由非 Java 语言实现的方法 )服务,不同 JVM 实现对其处理有别,有的直接复用 Java 栈。

  • 堆(Heap):JVM 中最大的内存区域,线程共享,几乎所有对象实例和数组都在这分配内存,是垃圾回收(GC)的主要区域,分新生代、老年代等,方便垃圾回收器高效回收内存。

  • 程序计数器(Program Counter):线程私有,记录当前线程执行的字节码指令地址,线程切换后能恢复执行位置,保证程序正常流转,若线程执行的是本地方法,计数器值为 undefined 。

3. 执行引擎(Execution Engine)

负责执行字节码指令,它会把字节码翻译成机器能理解的指令并执行,和运行时数据区协作,从 Java 栈、堆等获取数据,完成计算逻辑,还会结合即时编译(JIT)等优化技术,提升执行效率。

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

  • 本地方法接口:作为 Java 代码调用本地方法(非 Java 实现 )的桥梁,让 JVM 能融合其他语言编写的功能。

  • 本地方法库:存放本地方法的具体实现,供本地方法接口调用,实现和操作系统、硬件等底层交互 。

注意!

在本地方法栈,java栈,程序计数器里面是不会产生垃圾的,不然程序会堵死,无法使用,我们常说的调优绝大部分都是在方法区和堆这两个结构里面进行调优。

http://www.lryc.cn/news/581227.html

相关文章:

  • Java创建型模式---工厂模式
  • PVE DDNS IPV6
  • 基于Elasticsearch的短视频平台个性化推荐系统设计与实现
  • SwiftUI 7(iOS 26)中玻璃化工具栏的艺术
  • 介绍electron
  • 基于spark的奥运会奖牌变化数据分析
  • 国产 OFD 标准公文软件数科 OFD 阅读器:OFD/PDF 双格式支持,公务办公必备
  • day44打卡
  • cmd 的sftp传输;Conda出现环境问题: error: invalid value for --gpu-architecture (-arch)
  • 浅度解读-(未完成版)浅层神经网络-多个隐层神经元
  • 前端-CSS-day1
  • 【openp2p】学习3:【专利分析】一种基于混合网络的自适应切换方法、装 置、设备及介质
  • WSL命令
  • 【爬虫】逆向爬虫初体验之爬取音乐
  • 大模型算法面试笔记——Bert
  • 计算机网络(网页显示过程,TCP三次握手,HTTP1.0,1.1,2.0,3.0,JWT cookie)
  • 一键将 SQL 转为 Java 实体类,全面支持 MySQL / PostgreSQL / Oracle!
  • 永磁同步电机无速度算法--基于锁频环前馈锁相环的滑模观测器
  • 使用SSH隧道连接远程主机
  • 五、Python新特性指定类型用法
  • 【赵渝强老师】Oracle RMAN的目录数据库
  • 数据库-元数据表
  • 事务的原子性
  • 自建双因素认证器 2FAuth 完美替代 Google Auth / Microsoft Auth
  • CSS 文字浮雕效果:巧用 text-shadow 实现 3D 立体文字
  • 虚拟机与容器技术详解:VM、LXC、LXD与Docker
  • HarmonyOS学习3---ArkUI
  • 《Redis》哨兵模式
  • ✨ OpenAudio S1:影视级文本转语音与语音克隆Mac整合包
  • 构建未来交互体验:AG-UI 如何赋能智能体与前端通信?