JVM内存模型【入门】

news2024/9/22 5:41:59

计算机结构简图

在这里插入图片描述

JVM内存模型

详细说明:https://blog.csdn.net/m0_71777195/article/details/126247090

什么是JVM?

JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一个虚构出来的计算机,有着自己完善的硬件架构,如处理器、堆栈等。

为什么需要JVM?

Java文件必须先通过一个叫javac的编译器,将代码编译成class文件,然后通过JVM把class文件解释成各个平台可以识别的机器码,最终实现跨平台运行代码。

img

JVM内存模型

堆和方法区(Metaspace元数据区)是所有线程共有的,而虚拟机栈,本地方法栈和程序计数器则是线程私有的。

img

image.png

1、生命周期与 Thread 相同的区域,即:线程创建时,相应的区域分配内存,线程销毁时,释放相应内存。
  1. PC Register程序计数器:记录正在执行的JVM字节码指令的地址
  2. JVM Stack:每个线程一个虚拟机栈,线程内每个方法创建一个栈帧。记录局部变量、方法返回地址等
  3. 本地方法栈:OS原生的本地方法所需的内存空间
  • PC Register:程序计数器, 记录每个线程当前执行的指令信。eg:当前执行到哪一条指令,下一条该取哪条指令。每条线程都会有一个独立的程序计数器。当线程正在执行一个Java方法,程序计数器记录的是正在执行的JVM字节码指令的地址;如果正在执行的是一个Natvie(本地方法),那么这个计数器的值则为空(Underfined)。
  • JVM Stack:虚拟机栈,每个线程在创建时都会创建一个虚拟机栈,其内部保存一个个的栈帧(Stack Frame),对应着一次次的Java方法调用。记录每个栈帧(Frame)中的局部变量、方法返回地址等。虚拟机栈的作用:主管Java程序的运行,它保存方法的局部变量、部分结果,并参与方法的调用和返回。栈帧的作用有存储数据,部分过程结果,处理动态链接,方法返回值和异常分派。
  • Native Method Stack:本地(原生)方法栈,顾名思义就是调用操作系统原生本地方法时,所需要的内存区域。

虚拟机栈为虚拟机执行Java 方法(也就是字节码)服务,而本地方法栈则是为虚拟机使用到的Native 方法服务。

2、所有线程共享的(Heap、Method Area 都是在虚拟机启动时创建,虚拟机退出时释放)
  1. 堆:对象实例、数组等
  2. 方法区(元空间):类结构、类成员定义、常量、静态变量、编译后的代码缓存
  • 堆内存区:也是 GC 垃圾回收的主站场,用于存放类的实例对象及 Arrays 实例等
  • Method Area:方法区,主要存放类结构、类成员定义,static 静态成员等。方法区(Method Area)与Java堆一样,是各个线程共享的内存区域,它用于存储已被虚拟机加载的类型信息、常量、静态变量、即时编译器编译后的代码缓存等数据

其他参考图:

img
图片来自网络&课程,侵权可删。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/824338.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VMware vSphere整体解决方案及实验拓扑

VMware vSphere整体解决方案及实验拓扑 VMware vSphere完整的解决方案 VMware vSphere有两个核心组件:ESXI,vCenter。ESXI实现的是单机虚拟化,而vCenter实现集群虚拟化,把所有的ESXI统一进行管理。当然了,要想是实现…

IntelliJ IDEA 2023.2新特性详解第二弹!

4 性能分析器 4.1 从 Run(运行)工具窗口使用分析功能 2023.2 中,可直接从 Run(运行)工具窗口轻松访问 IntelliJ 分析器的功能。 使用新按钮,点击即可调用: Attach IntelliJ Profiler&#xff…

基于“RWEQ+”集成技术在土壤风蚀模拟与风蚀模数估算、变化归因分析中的应用

土壤风蚀是一个全球性的环境问题。中国是世界上受土壤风蚀危害最严重的国家之一,土壤风蚀是中国干旱、半干旱及部分湿润地区土地荒漠化的首要过程。中国风蚀荒漠化面积达160.74104km2,占国土总面积的16.7%,严重影响这些地区的资源开发和社会经…

Linux【网络基础】之宏观认识

文章目录 一、计算机网络背景二、计算机网络协议(1)网络协议的概念(2)协议分层(3)数据封装与分用(4)地址管理 一、计算机网络背景 学习计算机网络我们首先要有宏观的认识&#xff0…

03|Oracle学习(主键约束、联合主键)

1. 主键约束介绍 主键:数据表中的一个或多个字段,用于唯一标识数据表中的一条记录。 2. 添加主键约束 2.1 在创建表时添加约束 写法1: CREATE TABLE tb_students(stu_num char(5) primary key,stu_name varchar(10) not null,stu_sex cha…

在政策+市场双轮驱动下,深眸科技助力机器视觉行业走向成熟

近年来,随着人工智能发展的不断提速,机器视觉作为其重要的前沿分支,凭借着机器代替人眼来做测量和判断的能力,广泛应用于工业领域的制造生产环节,用来保证产品质量、控制生产流程、感知环境等,并迸发出强劲…

滴滴数据服务体系建设实践

什么是数据服务化 大数据开发的主要流程分为数据集成、数据开发、数据生产和数据回流四个阶段。数据集成打通了业务系统数据进入大数据环境的通道,通常包含周期性导入离线表、实时采集并清洗导入离线表和实时写入对应数据源三种方式,当前滴滴内部同步中心…

sql入门基础-2

Dml语句 对数据的增删改查 关键字 Insert增 Update删 Delete改 添加数据 给指定字段添加数据 Insert into 表明 (字段名1,字段名2) values(值1,值2); 给全部字段添加数据--(根据位置对应添加到字段下) Insert into 表名 values…

24考研数据结构-树与二叉树的基本概念

目录 第五章:树5.1树的基本概念5.1.1树的定义5.1.2 基本术语5.1.3 树的性质 5.2二叉树的概念5.2.1 二叉树的定义与特性5.2.2 几种特殊的二叉树5.2.3 二叉树的性质5.2.4 完全二叉树的性质5.2.5 二叉树的存储结构1. 顺序存储重要的基本操作非完全二叉树2. 链式存储逆向…

Flowable-子流程-事件子流程

目录 定义图形标记XML内容使用示例视频教程 定义 事件子流程是 BPMN 2.0 中加入的新元素,它是指通过事件触发的子流程,可以存在于在流程 级别,或者任何子流程级别。和内嵌子流程类似,把一系列的活动归结到一起处理,不…

vue: dev-tools控制台不显示问题

安装好dev-tools 导致控制台不显示的原因&#xff1a; 使用的vue压缩版本 vue.min.js。配置问题导致 1.查看public/index.html中引用的vue是否为压缩版本&#xff08;vue.min.js&#xff09;。 需要把压缩版换成vue.js <% if (process.env.NODE_ENV production) { %> &…

C语言中char、short、int、long各占多少字节

1byte 8bit 一个字节占8个二进制位 windows操作系统&#xff0c;32位机中&#xff0c; char&#xff1a; 1个字节 short&#xff1a; 2个字节 int&#xff1a; 4个字节 long&#xff1a; 4个字节 以下是windows操作系统&#xff0c;32位机下的代码测试结果&#xff08;3…

嵌入式高星github项目仓库

awesome-embedded soft-and-hard freemodbus

C# 外观模式

概述 外观模式&#xff08;Facade Pattern&#xff09;是一种结构型设计模式&#xff0c;它提供了一个统一的接口&#xff0c;用于访问子系统中的一组接口。外观模式隐藏了子系统的复杂性&#xff0c;使得客户端可以通过简单的接口与子系统进行交互。 外观模式定义了一个高层…

计算机体系结构知识点大全

计算机体系结构知识点大全 计算机体系结构Chapter-1&#xff1a;计算机系统结构的基本概念Chapter-2&#xff1a;指令系统Chapter-3&#xff1a;流水线技术Chapter-4&#xff1a;存储层次Chapter-5&#xff1a;输入输出系统Chapter-6&#xff1a;多处理机Chapter-7&#xff1a;…

EXCEL,查询多条件数字/文本内容的多方法总结

目录 1 问题&#xff1a;如何根据多条件查询到想要的内容 2 方法1&#xff1a; sumif() 和sumifs() 只适合查找数字&#xff0c;不适合查找文本字符串类型的内容 3 使用lookup(1,0/(条件1*条件2*....),结果查询区域) 的方法 4 vlookup()if()数组公式 5 使用 index()match…

STM32按键控制LED灯-HAL库

前言 空窗了一年&#xff0c;重头再来点个灯吧&#xff0c;本篇文章将主要给大家讲解按键点灯 一、原理图设计 LED0-LED2 --------> PA0-PA2引脚 KEY1 ---------> PA3引脚 二、CubeMX的设置 LED选择GPIO一次将PA0、PA1、PA2设置为GPIO_Output&#xff0c;输出电平为…

向 Maven 中央仓库上传一个修改过的基于jeecg的autoPOI的 jar包记录

1、注册https://issues.sonatype.org/账号 下面就代表注册好了&#xff0c;同时提交的工单也通过了 2、这里主要是goupId 需要进行认证&#xff0c;需要到域名注册商近一个txt的解析&#xff0c;以便确保这个是你的 通过下面来验证你的域名信息&#xff0c;这里主要是上面的工…

Permute 3 for mac音视频格式转换

Permute是一款Mac平台上的媒体格式转换软件&#xff0c;由Chaotic Software开发。它可以帮助用户快速地将各种音频、视频和图像文件转换成所需格式&#xff0c;并提供了一些常用工具以便于用户进行编辑和处理。 Permute的主要特点包括&#xff1a; - 支持大量格式&#xff1a;支…

工程监测仪器振弦传感器信号转换器(VTI104_DIN)

工程监测仪器振弦传感器信号转换器&#xff08;VTI104_DIN&#xff09; 振弦传感器信号转换器&#xff0c;简称VTI104_DIN&#xff0c;是一种用于转换振弦传感器信号的电子设备。该设备可以将振弦传感器产生的模拟信号转换成标准的电压或电流输出&#xff0c;从而使其可以连接…