JVM学习笔记三:运行时数据区概述及线程

JVM的运行时数据区之运行时数据区概述 JVM的运行时数据区之运行时数据区概述 堆、方法区(元空间) 主要用来存放数据是线程共享的。 程序计数器、本地方法栈、虚拟机栈是运行程序的,是线程私有的。 JVM的运行时数据区,不同虚拟机实现可能略微有所不同,但都会遵从java虚拟机规范,java 8 虚拟机规范规定,java虚拟机所管理的内存将会包括一下几个运行时数据区域: 1、程序计数器 (Program Counter Register) 程序计数器(Program Counter Register)是一块较小的内存空间,它可以看 作是当前线程所执 阅读详情

0. 前言

声明:
感谢尚硅谷宋红康老师的讲授。
感谢广大网友共享的笔记内容。
B站:https://www.bilibili.com/video/BV1PJ411n7xZ
本文的内容基本来源于宋老师的课件,其中有一些其他同学共享的内容,也有一些自己的理解内容。

目录

  1. 概述
  2. 线程

1. 概述

运行时数据区

JVM内存模型
阿里Java规范对JVM内存模型的划分
阿里Java规范对JVM内存模型的划分
其中 元数据 和 CodeCache,都可以统称为非堆空间。方法区也可以称为元空间。在 Java 类库当中,运行时数据区也有一个对应的类:Runtime。

对于各个区域是共享的还是线程私有的,如下图:
pc:程序计数器
VMS:虚拟机栈
NMS:本地方法栈

共享区域与线程私有区域

2. 线程

线程是一个程序里的运行单元。JVM 允许一个应用有多个线程并行的执行。 在 Hotspot JVM 里,每个线程都与操作系统的本地线程直接映射。

当一个 Java 线程准备好执行以后,此时一个操作系统的本地线程也同时创建。Java 线程执行终止后,本地线程也会回收。

操作系统负责所有线程的安排调度到任何一个可用的 CPU 上。一旦本地线程初始化成功,它就会调用 Java 线程中的 run() 方法。

2.1 JVM系统线程

如果你使用 jconsole 或者是任何一个调试工具,都能看到在后台有许多线程在运行。这些后台线程不包括调用 public static void main(String[] args) 的 main 线程以及所有这个 main 线程自己创建的线程。

这些主要的后台系统线程在Hotspot JVM里主要是以下几个:
● 虚拟机线程:这种线程的操作是需要JVM达到安全点才会出现。这些操作必须在不同的线程中发生的原因是他们都需要JVM达到安全点,这样堆才不会变化。这种线程的执行类型包括 "stop-the-world" 的垃圾收集,线程栈收集,线程挂起以及偏向锁撤销。
● 周期任务线程:这种线程是时间周期事件的体现(比如中断),他们一般用于周期性操作的调度执行。
● GC线程:这种线程对在JVM里不同种类的垃圾收集行为提供了支持。
● 编译线程:这种线程在运行时会将字节码编译成到本地代码。
● 信号调度线程:这种线程接收信号并发送给JVM,在它内部通过调用适当的方法进行处理。

Jvm - 详解一 运行时数据区 一.为什么说Java是一门跨平台语言 Java内置JVM (java虚拟机),而JVM也是一个软件,不同的平台有不同的版本。我们编写的Java源码,编译后会生成一种 .class 文件,称为字节码文件。Java虚拟机就是负责将字节码文件翻译成特定平台下的机器码然后运行。也就是说,只要在不同平台上安装对应的JVM,就可以运行字节码文件,运行我们编写的Java程序。 二.java程序从编译到执行的过程 先看一幅图 从图中可以看出,我们编写的Java文件,经由javac编译器,... 阅读详情

相关推荐

第三章:缘尽-运行时数据区概述及线程

文章目录第 3 章 运行时数据区概述及线程1、前言2、运行时数据区结构2.1、运行时数据区与内存2.2、线程的内存空间3、线程3.1、JVM 线程3.2、JVM 系统线程 第 3 章 运行时数据区概述及线程 1、前言 本节主要讲的是运行时数据区,也就是下图这部分,它是在类加载完成后的阶段 当我们通过前面的:类的加载 --> 验证 --> 准备 --> 解析 --> 初始化,这几个阶段完成后,就会用到执行引擎对我们的类进行使用,同时执行引擎将会使用到我们运行时数据区 也就是大厨做

程序员小刘 3157

JVM学习笔记三--运行时数据区概述及线程

文章目录一、概述二、线程总结 一、概述 二、线程 总结 提示:这里对文章进行总结: 例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。 ...

weixin_45787495的博客 212

计算机视觉-全景图像拼接中的特征匹配与优化策略

本文深入探讨了计算机视觉中全景图像拼接的核心技术,重点解析了特征匹配后的关键优化策略。通过SIFT特征提取、RANSAC算法剔除误匹配,并结合APAP算法应对视差与鬼影问题,详细阐述了从基础对齐到无缝融合的完整流程,为开发者实现高质量全景拼接提供了实用指南。

weixin_29039773的博客 361

JVM学习笔记(三):运行时数据区(Runtime Data Area)概述与线程(Thread)

一

Lemon 439

手把手教你用C语言实现GNSS卫星方位角计算(附RTKLIB风格代码解析)

本文详细介绍了如何使用C语言实现GNSS卫星方位角计算,包括从地固坐标系到站心坐标系的转换链条。通过RTKLIB风格的代码解析,展示了XYZ到ENU坐标转换的核心原理和C语言实现框架,帮助开发者掌握卫星方位角和高度角的计算技巧,适用于GNSS观测数据质量分析和精密定位算法开发。

weixin_30699915的博客 364

【win11 cuda12.0安装tensorflow-gpu】

win11 cuda 12.0 安装 tensorflow-gpu

weixin_36299320的博客 3009

JVM运行时数据区——运行时数据区及线程概述

JVM通常会根据运行环境和代码的特性动态地选择解释模式或编译模式。在程序启动时,JVM会使用解释模式来快速启动,然后根据代码的热点(HotSpot)来判断是否进行即时编译

胡晗靓的Java学习博客 702

【信息系统项目管理师】第1章:信息化发展 考点梳理

本文主要详细梳理高项:信息化、新型基础设施建设、两化融合、数字中国、数字化转型与元宇宙等内容。

数据知道的博客 8569

3. JVM-运行时数据区概述及线程

JVM-运行时数据区概述及线程

Android系统优化 3310

【linux】linux 出现一个网卡绑定多个ip怎么处理

我的原因是我使用了dhcp,这个会自动分配ip, 将 BOOTPROTO 参数由 dhcp 改为 static,并移除或注释掉与动态分配地址 10.0.2.15 相关的配置行(如果存在)。执行后,您可以再次使用 ip -4 a 或 ifconfig 命令确认 IP 地址已被移除。输出可以看出,您的虚拟机(k8s003)中存在一个名为 enp0s3 的网卡绑定了多个 IPv4 地址。对于某些 Linux 发行版(如 Ubuntu、Debian),您可能需要编辑网络接口的配置文件来移除多余的 IP 地址。

九师兄 297

基于STM32L4XX、HAL库的E180-ZG120B ZigBee模块驱动程序设计

/ 频率: 470MHz, SF7, BW125kHz, CR4/5, 功率14dBm。// 检查是否收到完整响应(根据实际情况调整)// 每5秒发送一次。PB0 <---> AUX (可选,用于状态检测)// 实际发送命令可能需要根据模块AT指令集调整。PC13 <---> RESET (可选)// 处理接收到的数据。// 缓冲区满,从头开始。// 其他必要的HAL库初始化代码...// 初始化E180模块。// 启动UART接收。// 如果需要等待响应。// 配置LoRa参数。

zhusl6688的博客 380

【JVM】三、运行时数据区概述及线程

大家好,我是被白菜拱的猪。 一个热爱学习废寝忘食头悬梁锥刺股,痴迷于girl的潇洒从容淡然coding handsome boy。 假如你喜欢我的文字,欢迎关注公众号“放开这颗白菜让我来” 文章目录03-运行时数据区概述及线程一、概述二、线程 03-运行时数据区概述及线程 一、概述 执行引擎执行都会用到运行时数据区 就像厨师做饭,刀具调料就是运行时数据区,厨师就是执行引擎,做完饭还要清理桌面进行回收。 内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程序的实时运行。JVM

放开这颗白菜让我来 184

5G射频到底是啥?方案怎么搭?工作流程、SAW选型、PA选型一口气讲透(工程师秒懂版)

很多人一提 5G 射频,脑子里先冒出来的是几个零件名:👉 PA👉 LNA👉 SAW👉 天线👉 开关但真正做方案时,这些东西不是一堆分立器件,而是一条完整的“信号流水线”。更准确地说,。Qualcomm 对 RFFE 的定义就是“把信息转换成可发送的射频信号,并把接收到的信号转换回有用信息”的那一整套组件。

weixin_43199439的博客 533

运行时数据区概述及线程

运行时数据区概述及线程 运行时数据区图: 运行时数据区在整个jvm中扮演的角色图解: 内存是非常重要的系统资源,是硬盘和cPU的中间仓库及桥梁,承载着操作系统和应用程序的实时运行。JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策略,保证了JVM的高效稳定运行。不同的JVM对于内存的划分方式和管理机制存在着部分差异。结合JVM虚拟机规范,来探讨一下经典的JVM内存布局。 Java虚拟机定义了若千种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而

水巷石子的博客 3276

用 SemanticObject 把字段变成可点击链接:Fiori Elements Navigation Using a Link 的工程化实践

SAP Fiori elements 通过 Common.SemanticObject 注解可将字段转为可点击链接,实现应用间跳转。当源字段名与目标属性名不一致时,需使用 Common.SemanticObjectMapping 进行映射。该功能依赖 Fiori Launchpad 的目标映射配置,确保正确解析 semantic object + action 并传递参数。常见误区包括未配置目标映射或字段映射错误,需逐一检查语义标注、intent 解析和参数传递链路。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 272

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

第 3 章 运行时数据区概述及线程

第 3 章 运行时数据区概述及线程 1、前言 本节主要讲的是运行时数据区,也就是下图这部分,它是在类加载完成后的阶段 当我们通过前面的:类的加载 --> 验证 --> 准备 --> 解析 --> 初始化,这几个阶段完成后,就会用到执行引擎对我们的类进行使用,同时执行引擎将会使用到我们运行时数据区 也就是大厨做饭,我们把大厨后面的东西(切好的菜,刀,调料),比作是运行时数据区。而厨师可以类比于执行引擎,将通过准备的东西进行制作成精美的菜品 2、运行时数据区结构 2.1、运行时数据

Oneby的博客 1511

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

第3章 运行时数据区概述及线程

第3章 运行时数据区概述及线程

感谢所有乐于奉献的人,在此不一一具名 766

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

JVM-运行时数据区

JVM的运行时数据区是Java程序运行的基础,主要分为线程私有和线程共享区域。线程私有区域包括程序计数器、虚拟机栈和本地方法栈,分别用于存储指令地址、方法调用信息和本地方法调用信息。线程共享区域包括堆和方法区(元空间),堆用于存储对象和数组,方法区存储类的元数据信息。JDK 1.8之后,方法区从堆中移出,改用本地内存实现。运行时数据区的设计确保了多线程环境下的安全性和高效性,堆的分代收集机制和逃逸分析技术进一步优化了内存管理。

weixin_74141526的博客 1476

JVM(三、运行时数据区)

程序计数器(Program Counter Register)是一块较小的内存空间,,如果线程正在执行的是一个Java方法,这个计数器记录的是;如果正在执行的是本地(Native)方法,Undefined此内存区域是唯一一个《Java虚拟机规范》中没有规定任何情况的区域。

学点东西吧的博客 949

画图学 JVM(五) 03 运行时数据区概述和线程

学习 03 运行时数据区概述及线程, 主要内容为:Java 虚拟机 运行时数据区所处位置,结构划分,各个区域与线程的关系等。 附:03 运行时数据区概述及线程.ppt

大鱼的博客 585

JVM 运行时数据区详解

运行时数据区 JVM规范定义了程序执行期间所需的某些运行时数据区域。其中一些是在JVM启动时创建的。其他线程是线程本地的,仅在创建线程时创建(在销毁线程时销毁)。这些在下面列出 PC(程序计数器)寄存器 它在每个线程本地,并且包含该线程当前正在执行的JVM指令的地址 栈 它是每个线程局部的,并在方法调用期间存储参数,局部变量和返回地址。如果线程需要的堆栈空间超出允许的范围,则会发生StackOverflow(栈溢出)错误。如果堆栈是动态可扩展的,它仍然可以抛出OutOfMemoryError(内存越界)。

分享技术,享受生活 5048

jvm运行时数据区概述及线程

运行时数据区概述及线程 前言 运行时数据区,也就是下图这部分,它是在类加载完成后的阶段 当我们通过前面的:类的加载-> 验证 -> 准备 -> 解析 -> 初始化 这几个阶段完成后,就会用到执行引擎对我们的类进行使用,同时执行引擎将会使用到我们运行时数据区 也就是大厨做饭,我们把大厨后面的东西(切好的菜,刀,调料),比作是运行时数据区。而厨师可以类比于执行引擎,将通过准备的东西进行制作成精美的菜品 内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程

Hai-Yang-code的博客 407

【Java JVM】运行时数据区

JVM 在执行 Java 程序的过程中会把它管理的内存分为若干个不同的数据区域, 这些区域有着各自的用途。根据《Java虚拟机规范》中规定, JVM 所管理的内存大致包括以下几个运行时数据区域, 如图所示:这个运行时数据区被分为了 5 大块其中: 绿色部分是各个线程之间独享的部分, 而蓝色部分是所有线程共享的区域。

LCN29的博客 1309

《剑指JVM》——第2章 运行时数据区概述及布局介绍—运行时数据区篇1

🔥本篇概览:详细讲解了运行时数据区概述及布局介绍概述。🌈⭕🔥

做一个善良的人,做好自己的事,如果愿意,再发一份光。 930
上一篇: JVM学习笔记二:类加载子系统
下一篇: JVM学习笔记四:程序计数器(PC寄存器)
种花途。
博客等级 码龄10年 3粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值