Java面试八股之简述JVM内存结构

  1. 简述JVM内存结构

Java虚拟机(JVM)内存结构主要分为线程私有区域和线程共享区域两大部分,具体组成部分如下:

 线程私有区域

程序计数器(Program Counter Register):

记录当前线程执行的字节码行号,用于跟踪下一条需要执行的指令。

占用空间小,几乎不会发生内存溢出(Out Of Memory,OOM)。

虚拟机栈(Java Virtual Machine Stacks):

每个线程都有自己的栈,用于存储方法调用时的信息,包括局部变量表、操作数栈、动态链接、方法出口等。

栈帧随着方法的调用和返回而入栈和出栈。

栈的大小可以固定也可以动态扩展,但动态扩展时若无法申请到足够的内存会抛出StackOverflowError或OutOfMemoryError。

本地方法栈(Native Method Stacks):

与虚拟机栈类似,但服务于本地(Native)方法,即用非Java语言编写的方法。

同样可能抛出StackOverflowError或OutOfMemoryError。

线程共享区域

堆(Heap):

JVM中最大的一块内存区域,用于存储几乎所有的对象实例和数组。

分为年轻代(Young Generation)和老年代(Old Generation)。

年轻代进一步分为Eden区和Survivor区(由两个相同大小的From Space和To Space组成)。

对象创建发生在年轻代的Eden区,经过多次GC幸存的对象会被移动到老年代。

若堆内存不足,会抛出OutOfMemoryError。

方法区(Method Area):

存储类的元数据信息,如类的结构(如字段、方法信息)、运行时常量池、静态变量等。

在Java 8之前,永久代(Permanent Generation)是方法区的实现,之后被元空间(Metaspace)取代。

元空间使用本地内存,不再受Java堆大小的限制,但过度使用仍会导致OutOfMemoryError。

运行时常量池(Runtime Constant Pool):

方法区的一部分,存放编译期生成的各种字面量和符号引用,如字符串字面量、类名、方法名等。

动态常量池,能够在运行期间将新的常量放入池中。

总结来说,JVM内存结构设计精巧,通过区分线程私有和共享区域,以及细致划分各个区域的功能,确保了Java程序的高效、安全运行。

 如果大家需要视频版本的讲解,欢迎关注我的B站:

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

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

相关文章

逻辑整理(光伏发电预测算法部署用的)

def main():while True:if is_true_month(): # 检查是否为每年的1月份、4月份、7月份、10月份的凌晨1:00,判断到minget_new_history_data # 获取最新的3个月左右的历史数据train model # 进行模型训练save model # 保存模型 在之前模型保存的位置直接覆…

三角形法恢复空间点深度

三角形法恢复空间点深度 如下图,以图 I 1 I_1 I1​为参考,图 I 2 I_2 I2​的变换矩阵为 T T T。相机光心为 O 1 O_1 O1​和 O 2 O_2 O2​。在图 I 1 I_1 I1​中有特征点 p 1 p_1 p1​,对应图 I 2 I_2 I2​中有特征点 p 2 p_2 p2​。理论上直…

战略网络优化:网络可观测性的综合方法

在网络成为运营支柱的时代,了解和优化网络性能至关重要。网络可观测性是了解网络性能的关键,它以一种全面、主动的方式超越了传统监控。本文说明了网络可观测性的变革力量,详细介绍了其优势、差异化因素及其在现代网络管理中的关键作用。 什…

vue学习(三)

14.监视属性watch 当被监视的属性发生变化时,回调函数立即调用,进行操作 监视的两种写法:直接配置或者通过vm添加 watch:{isHot:{immediate:true, //首次用到执行handler(newValue,oldValue){console.log("isHot 被修改了",newV…

python如何做报表系统

首先我们安装的python和PyQt5要保持一致,要么都是32位或者都是64位。 下载安装,安装完成之后我们记得要设置环境变量。 一路选择“下一步”就可以了。 安装完成之后我们需要验证是否成功。 pyqt5的安装直接安装就可以的,主要更改环境变量~~\p…

日语 11 12

11. 若者の意識 わかもの  いしき 新作 新作 新作 新作 新作 しんさく 公開 公開 公開 公開 公開 こうかい 映像 映像 映像 映像 映像 えいぞう 人気 人気 人気 人気 人気 にんき 来週 来週 来週 来週 来週 らいしゅう 外国 外国 外国 外国 外…

数据结构之B数

目录 1.概述 2.特点 3.诞生 4.优缺点 4.1.优点 4.2.缺点 5.应用场景 6.C语言中的B树实现例子 7.总结 1.概述 B树(B-tree)是一种自平衡的树数据结构,广泛应用于数据库和文件系统中,以便高效地进行顺序读取、写入以及查找…

桥式起重机司机精选试题(附答案)

1、【多选题】凡能引起可燃物质燃烧的热能称为着火源,着火源类型有:( )。( ABCD ) A、明火 B、电气火 C、雷电产生的火花 D、化学反应热 2、【多选题】制动器失效的主要原因是:( )。(BCD) A、制动带间隙过小 B、制动带磨损 C、弹簧失效 D、带上有油 3、【多…

vue3.0(十四)内置组件KeepAlive

文章目录 一、KeepAlive是什么1.KeepAlive的props属性2.KeepAlive的生命周期 二、使用场景三、源码四、缓存后如何获取数据 一、KeepAlive是什么 keep-alive是vue中的内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染DOM keep-alive 包裹动…

短剧app对接广告联盟流量变现开发 搭建

短剧APP对接广告联盟以实现流量变现的开发和搭建是一个综合性的过程,涉及多个关键步骤和要素。以下是一个大致的指南: 确定目标与定位: 明确短剧APP的目标受众是谁,以及其主要定位是什么,例如是提供原创短剧内容&#…

使用 C# 进行面向对象编程:第 9 部分

使用 OOP 的用户活动日志 应用程序背后的关键概念 在这一部分中,我们将使用之前学到的一些 OOP 概念。我们将创建一个小型应用程序。在继续之前,请阅读我的文章user-activity-log-using-C-Sharp-with-sql-server/。在本课程中,我们将再次使…

国内公开数据

以下是一些关于国内政府部门公布的数据或互联网上开放数据的资源,包括CSV、JSON和Parquet格式: 国内政府部门公开数据 中国政府数据开放平台 链接: 数据开放平台概要: 提供来自中国各级政府的公开数据集,数据格式包括CSV、JSON等。 上海市公…

2024年燃气企业负责人和安全管理人员考试题库。

31.使用( )进行液化天然气(LNG)的输送,对于卸、装车可以缩短卸、装车时间,提高输送效率。 A.低温泵 B.增压器 C.减压器 答案:A 32.液化天然气(LNG)用作调峰气源时,应注意与原燃气的( )&…

测试人员遇到需求变更 4大处理技巧

测试人员有效的需求变更管理,可以确保即使在需求频繁变化的情况下,测试工作仍然能够覆盖所有必要的功能点,从而保障最终产品的质量。如果没有合理的需求变更处理技巧,可能会造成不必要的返工和重复测试,无法维持项目的…

平安养老险浙江分公司开展防范非法集资宣传,守护群众“钱袋子”

为进一步提高群众对非法集资的防范意识的鉴别能力,近期,平安养老保险股份有限(以下简称“平安养老险”)浙江分公司以“守住钱袋子、护好幸福家”为宣传主题,深入居民社区、办公职场等公共场所开展的宣传活动。 平安养老…

排序题目:有序数组的平方

文章目录 题目标题和出处难度题目描述要求示例数据范围进阶 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题:有序数组的平方 出处:977. 有序数组的平方 难度 2 级 题目描述 要求 给定按非递减顺序排序的整…

看完再买不后悔!希喂、小米、霍尼韦尔宠物空气净化器性价比比拼

在忙碌的工作之余,养一只猫真的能治愈一切的不快,让我们的心灵得到片刻的宁静。然而,这份宁静背后,却隐藏着一些不易察觉的烦恼——猫浮毛和异味。 猫浮毛,这个看似微不足道的小问题,实则给许多宠物主人带…

PS选不了颜色和路径描边?PS不知为何才能描边任意路径,这个办法让你秒懂

在选中路径的情况下,按图下操作,即可制作路径(不会让你选不了颜色和路径描边)

第4章 工程经济评价指标 作业

第4章 工程经济评价指标 作业 一单选题&#xff08;共27题&#xff0c;100分&#xff09; (单选题)利息备付率是指( )与应付利息费用的比值。 A. 息税前利润 B. 利润总额 C. 净利润 D. 营业收入 正确答案: A:息税前利润; (单选题)当净现值( )0时,该项目不可行。 A. < B. …

leetcode:557. 反转字符串中的单词 III(python3解法)

难度&#xff1a;简单 给定一个字符串 s &#xff0c;你需要反转字符串中每个单词的字符顺序&#xff0c;同时仍保留空格和单词的初始顺序。 示例 1&#xff1a; 输入&#xff1a;s "Lets take LeetCode contest" 输出&#xff1a;"steL ekat edoCteeL tsetnoc…