当前位置: 首页 > 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.dtcms.com/a/267205.html

相关文章:

  • 交互式剖腹产手术模拟系统开发方案
  • 【openp2p】学习3:【专利分析】一种基于混合网络的自适应切换方法、装 置、设备及介质
  • C# 事件(事件访问器)
  • vue中添加原生右键菜单
  • [特殊字符]全面解锁远程运维新时代:CRaxsRat v7.4 工具实用指南(附推荐资源)
  • Oracle 高级 SQL 查询与函数详解:多表连接、子查询、聚合、分析函数
  • 冒泡和快速排序的区别
  • faster_lio 原理及代码
  • 【Oracle专栏】分区表增加分区
  • WPF学习笔记(25)MVVM框架与项目
  • spring-ai-alibaba 1.0.0.2 学习(十二)——聊天记忆扩展包
  • 深度学习的核心理论与技术
  • 11_架构演进:从单体到云原生的蜕变
  • 炸鸡派例程-ADC
  • RabbitMQ 4.1.1初体验-队列和交换机
  • 【AI论文】WorldVLA:迈向自回归动作世界模型
  • 第二章 简单程序设计
  • 盘式制动器的设计+说明书和CAD)【6张】+绛重
  • 一种结合双阶段注意力循环神经网络(DA-RNN)和卷积块注意力模块(CBAM)的滚动轴承故障诊断方法
  • Rust实用案例解析
  • 后端树形结构
  • Qt处理USB摄像头开发说明与QtMultimedia与V4L2融合应用
  • 【爬虫】逆向爬虫初体验之爬取音乐
  • 408第三季part2 - 计算机网络 - 物理层
  • 由coalesce(1)OOM引发的coalesce和repartition理解
  • 3dmax一键烘焙很多张贴图合并成一张贴图插件支持fbx/obj/blender多材质模型合并为一张贴图
  • OneCode自主UI设计体系:架构解析与核心实现
  • web前端面试-- MVC、MVP、MVVM 架构模式对比
  • Vue.js TDD开发深度指南:工具链配置与精细化测试策略
  • 爬虫工程师Chrome开发者工具简单介绍