jvm 内存区域划分-优快云博客

昇腾910B+MindIE部署Qwen模型避坑指南:从镜像下载到推理测试全流程 本文详细介绍了在昇腾910B硬件环境中使用MindIE推理工具部署Qwen系列模型的全流程指南。从环境准备、镜像下载到模型部署与性能优化,提供一站式解决方案,帮助开发者高效完成AI模型推理任务。 阅读详情

运行时数据区域

Java 虚拟机在执行 Java 程序的过程中会把它所管理的内存划分为若干个不同的数据区域。\ 在这里插入图片描述

程序计数器

程序计数器(Program Counter Register)是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。在 Java 虚拟机的概念模型里,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,它是程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。

由于 Java 虚拟机的多线程是通过线程轮流切换、分配处理器执行时间的方式来实现的,在任何一个确定的时刻,一个处理器(对于多核处理器来说是一个内核)都只会执行一条线程中的指令。因此,为了线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器,各条线程之间计数器互不影响,独立存储,我们称这类内存区域为“线程私有”的内存。

Java 虚拟机栈

Java 虚拟机栈(Java Virtual Machine Stack)也是线程私有的,虚拟机栈描述的是 Java 方法执行的线程内存模型:每个方法被执行的时候,Java 虚拟机都会同步创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态连接、方法出口等信息。每一个方法被调用直至执行完毕的过程,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。

对虚拟机栈内存区域规定了两类异常状况:如果线程请求的栈深度大于虚拟机所允许的深度,将抛出 StackOverflowError 异常;如果 Java 虚拟机栈容量可以动态扩展,当栈扩展时无法申请到足够的内存会抛出 OutOfMemoryError 异常。

本地方法栈

本地方法栈(Native Method Stacks)与虚拟机栈所发挥的作用是非常相似的,其区别只是虚拟机栈为虚拟机执行 Java 方法(也就是字节码)服务,而本地方法栈则是为虚拟机使用到的本地(Native)方法服务。\ 本地方法栈也会在栈深度溢出或者栈扩展失败时分别抛出 StackOverflowError 和OutOfMemoryError 异常。

Java 堆

对于 Java 应用程序来说,Java 堆(Java Heap)是虚拟机所管理的内存中最大的一块。Java 堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例.

Java 堆是垃圾收集器管理的内存区域。从回收内存的角度看,由于现代垃圾收集器大部分都是基于分代收集理论设计的,所以 Java 堆中经常会出现“新生代”“老年代”“永久代”“Eden 空间”“From Survivor 空间”“To Survivor 空间”等名词。如果从分配内存的角度看,所有线程共享的 Java 堆中可以划分出多个线程私有的分配缓冲区(Thread Local Allocation Buffer,TLAB),以提升对象分配时的效率。

方法区

方法区(Method Area)与 Java 堆一样,是各个线程共享的内存区域,它用于存储已被虚拟机加载的类型信息、常量、静态变量、即时编译器编译后的代码缓存等数据。

运行时常量池

运行时常量池(Runtime Constant Pool)是方法区的一部分。Class 文件中除了有类的版本、字段、方法、接口等描述信息外,还有一项信息是常量池表(Constant Pool Table),用于存放编译期生成的各种字面量与符号引用,这部分内容将在类加载后存放到方法区的运行时常量池中。

运行时常量池相对于 Class 文件常量池的另外一个重要特征是具备动态性,Java 语\ 言并不要求常量一定只有编译期才能产生,也就是说,并非预置入 Class 文件中常量池\ 的内容才能进入方法区运行时常量池,运行期间也可以将新的常量放入池中,这种特性\ 被开发人员利用得比较多的便是 String 类的 intern()方法。

直接内存

直接内存(Direct Memory)并不是虚拟机运行时数据区的一部分。但是这部分内存也被频繁地使用,而且也可能导致 OutOfMemoryError 异常出现。

ROS2_IGH方案配置(二)——Ubuntu22.04 实时内核性能验证与调优 本文详细介绍了在Ubuntu22.04系统上配置ROS2_IGH方案时,如何验证和调优PREEMPT_RT实时内核性能。通过使用cyclictest工具进行基准测试和压力测试,分析中断与硬件延迟,并优化内核参数,确保系统满足工业控制领域对硬实时性的苛刻要求。文章还提供了针对ROS2的特殊优化建议和性能监控方案,帮助开发者实现毫秒级延迟的稳定控制。 阅读详情

相关推荐

保姆级教程:在RK3588开发板上用CMake交叉编译ZLMediaKit(附完整toolchain配置)

本文提供了一份详细的RK3588开发板上使用CMake交叉编译ZLMediaKit的教程,包括完整的toolchain配置和实战避坑指南。从环境准备、工具链配置到依赖处理、编译部署,手把手指导开发者完成ARM64架构的流媒体服务搭建,特别适合嵌入式开发新手。

weixin_28681255的博客 383

3、JVM内存区域划分

一步一图的方式让你快速了解java代码对应的JVM底层到底发生了什么事情

weixin_35794878的博客 645

KEIL MDK 生成bin文件实战:C51与ARM双平台配置指南

本文详细介绍了在KEIL MDK开发环境中,为C51和ARM双平台自动生成BIN文件的实战方法。针对C51平台,通过srec_cat.exe工具编写批处理脚本并集成到KEIL;针对ARM平台,则利用fromelf.exe工具直接配置。文章还提供了通用脚本方案和路径、变量、版本兼容性等常见问题的避坑指南,帮助开发者高效完成嵌入式程序部署。

weixin_29188997的博客 346

【JVM】关于JVM的内部原理你到底了解多少(八股文面经知识点)

本期主要总结了JVM面经的常考题,主要讲解了JVM的内部实现原理包括内存区域的划分,类加载机制,垃圾的回收机制(GC)从什么是垃圾,如何进行识别,到最后的内存对象的释放,都做了比较详细的介绍

GGBond778的博客 1637

使用Python开发TreeATE的测试脚本常见问题

ImportError: No module named py_compile 找不到 DevLangPython3.dll 以上2个问题都是没有安装正确的Python,当前TreeATE依赖32位Python 2.7版本,暂时不支持Python 3以上版本

蓝白云的专栏 1033

【DRAM存储器六十八】DDR5介绍--DQS Interval Oscillator—动态时序校准利器

DDR5内存采用DQS间隔振荡器(DQSIntervalOscillator)技术应对高速数据传输中的时序漂移问题。该技术通过测量DQS信号在可编程时间窗口内的振荡次数(16位计数值),动态监测温度/电压变化导致的DQS-DQ延迟偏移。控制器通过MPC命令启停振荡器,读取MR46/MR47寄存器获取计数值,并与基准值对比来调整DQS相位,确保数据采样窗口始终处于最佳位置。该机制使DDR5在8400MT/s高速率下仍能保持数据可靠性,有效补偿±0.48tCK的时序偏移。

highman110的博客 149

【JVM内存区域】

我是廖志伟,一名Java开发工程师、幕后大佬社区创始人、Java领域优质创作者、优快云博客专家。拥有多年一线研发经验,研究过各种常见框架及中间件的底层源码,对于大型分布式、微服务、三高架构(高性能、高并发、高可用)有过实践架构经验。 博主:java_wxid 社区:幕后大佬 文章目录JVM内存区域程序计数器(线程私有)虚拟机栈(线程私有)本地方法区(线程私有)堆(Heap-线程共享)-运行时数据区新生代Eden区ServivorFrom区ServivorTo区MinorGC 的过程(复制->清.

我是Java程序员廖志伟,感谢朋友们的支持! 889

华为OD机试双机位C卷:挑选宝石 (C/C++/Python/JAVA/JS/GO)

华为OD机试双机位C卷 挑选宝石,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。华为OD机试-挑选宝石,华为OD机考-挑选宝石。

qq_45776114的博客 1500

【JVM】一、Java内存区域的介绍

注:本文资料收集自网络,一部分资料来源于大佬NO0b的博客,原博文链接:点我 JDK:Java开发工具 | JRE:Java运行环境 | JVM:Java虚拟机 (对应平台的虚拟机) JVM(Java Virtual Machine),意为Java虚拟机 Java的内存区域 Java程序是交由JVM执行的,所以我们在谈Java内存区域划分的时候事实上是指JVM内存区域...

Show_Mee@JAVA 245

3D视觉实战之双目相机物体尺寸实时测量

视差图滤波能够将稀疏视差转变为稠密视差,并在一定程度上降低视差图噪声,改善视差图的视觉效果,但是比较依赖初始视差图的质量。的目标是获得左右两个相机的内参、外参和畸变系数,其中内参包括左右相机的fx,fy,cx,cy,外参包括左相机相对于右相机的旋转矩阵和平移向量,畸变系数包括径向畸变系数(k1, k2,k3)和切向畸变系数(p1,p2)以及其他一些畸变类型。:相比于昂贵的专业设备,便宜的双目摄像头可以显著降低成本,使得实时点云生成技术更加普及和经济实惠。

qq_53545309的博客 2099

优化翼型形状的遗传算法实现

在每一代种群中,通过计算每个个体的适应度值,选择具有较高适应度值的个体,并使用交叉和变异算子对它们进行操作,从而生成新的个体。具体而言,我们将采用一个参数化的翼型模型,其中包括几何设计变量,如角度、弯曲和厚度等,以及性能指标,如升阻比和扭矩等。总之,本文提供了一个基于遗传算法的优化方法,用于寻找最优的翼型形状,并提供MATLAB源代码。需要注意的是,上述代码中的objFunc函数是一个示例性质的目标函数,实际应用中需要根据具体的问题进行修改。1.初始化一个随机的种群,其中每个个体代表一个参数化的翼型模型。

与其临渊羡鱼,不如退而结网 517

JVM总结

总结自:

weixin_51506133的博客 2420

【DL经典回顾】距离度量大汇总(7-余弦距离(Cosine Distance))

余弦距离(Cosine Distance)衡量的是两个向量在方向上的差异性,而不是在大小上的差异。

悦学共鸣,温柔以待,汇聚光芒,共同成长 2579

JVM内存区域

为了更好的理解类加载和垃圾回收,先要了解一下JVM的内存区域(如果没有特殊说明,都是针对的是 HotSpot 虚拟机。Java 源代码文件经过编译器编译后生成字节码文件,然后交给 JVM 的类加载器,加载完毕后,交给执行引擎执行。在整个执行的过程中,JVM 会用一块空间来存储程序执行期间需要用到的数据,这块空间一般被称为运行时数据区,也就是常说的 JVM 内存。JVM的不断在发展,所以内存区域的规范也在更新看这个地方的时候,总是不自觉的联想到操作系统的虚拟内存空间,疑惑它们之间的区别,这个博文。

yszdzjt的博客 284

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

浅识JVM

浅识JVM

如风暖阳的博客 1391

蓝牙模块HM-10手册

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

了解Java虚拟机(JVM)

上一章我们介绍网络原理相关的知识点,今天我们浅浅来了解一下java虚拟机JVMJVM内存区域划分方法区/元数据区(线程共享)堆(线程共享)虚拟机栈(线程私有)本地方法栈程序计数器(线程私有)类加载双亲委派模型类加载器类加载过程(也就是上面说的找class文件的过程)JVM垃圾回收机制(GC)找到不再使用的对象回收不再使用的对象分代回收如果各位对文章的内容感兴趣的话,请点点小赞,关注一手不迷路,讲解的内容我会搭配我的理解用我自己的话去解释如果有什么问题的话,欢迎各位评论纠正 🤞🤞🤞

N_0050的博客 1149

JVM工作原理与实战(四十二):JVM常见面试题目

JVM作为Java程序的运行环境,其负责解释和执行字节码,管理内存,确保安全,支持多线程和提供性能监控工具,以及确保程序的跨平台运行。本文主要介绍了JVM常见面试题目等内容。

Rye的博客 2436

1、JVM是如何工作的?

整体上理解JVM是如何工作的,如何执行我们写好的java代码的。

weixin_35794878的博客 975

深入理解JVM - 阅读笔记之思维导图 - 目录

深入理解JVM - 阅读笔记之思维导图阅读前须知目录总图 阅读前须知 本博客的主要作用是记录我在阅读《深入理解Java虚拟机》(周志明著)时的一些阅读笔记,此笔记是采用思维导图的形式记录的,较原书而言较为精简,但可能存在一些错误,如果有错误请在评论区指出,我会尽快修改。 在本思维导图中,会看到一个如下图所示的一个小记号,代表笔记/注释,在对应章节的底部我会列出来关于这个笔记/注释的一些具体信息。 ...

timczm的博客 5624

JVM的内存区域划分(*****)

Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。   概述:   对于从事C和C++程序开发的开发人员来说,在内存管理领域,他们既是拥有最高权力的皇帝,又是从事最基础工作的劳动人民—既拥有每 一个对象的“所有权”,又担负着每一个对象生命开始到终结的维护责任。   对于Java程序员来说,在虚拟机的自动内存管理机制

HZC的专栏 634

【Java面试必备】深度揭秘JVM:常见面试问题及详尽解答

尊敬的优快云读者们,在Java工程师招聘过程中,对JVM(Java虚拟机)的理解和掌握程度往往是衡量候选人技术水平的重要指标。本篇博客将深入探讨一些JVM相关的高频面试问题及其答案,帮助您更好地准备相关面试。

qq_58366795的博客 1112

Java JVM

找到所需要加载的类,并把类的信息加载到 JVM 的方法区中,然后在堆区中实例化一个java.lang.Class 对象,作为方法区中这个类的信息的入口。new对象、读取或者设置类的静态变量、调用类的静态方法、通过反射执行new或调用静态属性、初始化子类触发父类的初始化、调用main方法、接口实现类初始化的时候,会触发直接或间接实现的所有接口的初始化。区别于对象的初始化,类的初始化所做的一起都是基于类变量或类语句的,也就是说执行的都是共性的抽象信息。● 堆内存规整:已使用的内存在一边,未使用内存在另一边。

LQL 1241

二、深入理解JVM的内存区域

第一部分:运行时内存的划分 第二部分:堆上对象的创建,对象的内存布局,对象的访问定位 第三部分:OutOfMemoryError异常,堆溢出,栈和本地方法区溢出,方法区和运行时常量池溢出,本地直接内存溢出 第一部分: 一、主要讲解内存划分,用途,创建及销毁时间,有些区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。 运行时内存的划分 ●栈 ●堆(共享)...

空杯 298

Java的内存区域

TLAB(本地线程分配缓冲): 为每一个线程预先在 Eden 区分配一块儿内存,JVM 在给线程中的对象分配内存时,首先在 TLAB 分配,当对象大于 TLAB 中的剩余内存或 TLAB 的内存已用尽时,再采用上述的 CAS 进行内存分配,是否采用TLAB通过-XX:+/-UseTLAB参数设定。虚拟机采用 CAS 配上失败重试的方式保证更新操作的原子性。直接内存是一种特殊的内存缓冲区,并不在 Java 堆或方法区中分配的,而是通过 JNI 的方式在本地内存上分配的,内存不足报OutofMemory异常。

Swallow_A的博客 292

JVM类加载与GC垃圾回收机制

本篇文章将介绍JVM运行时分区,类加载过程已经垃圾回收机制中的查找垃圾的算法和回收垃圾算法,了解常见的Java虚拟机。

未见花闻的博客 1649

8、JVM优化简介

所谓的JVM优化指的到底是什么?

weixin_35794878的博客 473

Java 大厂面试题 -- JVM 面试题全解析:横扫大厂面试

深度解析 Java 大厂 JVM 面试真题,全面覆盖基础知识、性能优化、多线程并发等关键内容,结合真实案例与完整代码,详细阐述解题思路与要点,助力开发者在面试中脱颖而出。

开源架构师的博客 1060
上一篇: panads操作excel
下一篇: python自动化操作邮箱
过去日记
过去日记 新星创作者: 后端开发技术领域 新星创作者: 后端开发技术领域
博客等级 码龄3年 5342粉丝 225原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

过去日记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值