JVM面试题:(二)内存结构和内存溢出、方法区的两种实现

news2024/11/17 20:36:20

内存结构:

在这里插入图片描述
方法区和对是所有线程共享的内存区域;而java栈、本地方法栈和程序员计数器是运行是线程私有
的内存区域。

Java堆(Heap),是Java虚拟机所管理的内存中最大的一块。Java堆是被所有线程共享的一块内
存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,几乎所有的对象实
例都在这里分配内存。

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

程序计数器(Program Counter Register),程序计数器(Program Counter Register)是一块
较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器。

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

本地方法栈(Native Method Stacks),本地方法栈(Native Method Stacks)与虚拟机栈所发
挥的作用是非常相似的,其区别不过是虚拟机栈为虚拟机执行Java方法(也就是字节码)服
务,而本地方法栈则是为虚拟机使用到的Native方法服务。

内存溢出发生的区域:

堆、栈、方法区都有可能发生内存溢出
在这里插入图片描述

方法区:

在jdk1.8之前是永久代,1.8之后是元空间
在这里插入图片描述
永久代的方法区,和堆使用的物理内存是连续的。
法区存在于元空间(Metaspace)。物理内存不再与堆连续,而是直接存在于本地
内存中,理论上机器「内存有多大,元空间就有多大」。

表面上看是为了避免OOM异常。因为通常使用PermSize和MaxPermSize设置永久代的大小就
决定了永久代的上限,但是不是总能知道应该设置为多大合适, 如果使用默认值很容易遇到
OOM错误。当使用元空间时,可以加载多少类的元数据就不再由MaxPermSize控制, 而由系统
的实际可用空间来控制啦。

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

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

相关文章

软件测试之概念篇(需求,测试用例,BUG描述,产品的生命周期)

目录 1.什么是需求 2.什么是测试用例 3.什么是BUG 4.软件的生命周期 5.测试的生命周期 1.什么是需求 在大多数软件公司,一般会有两部分需求: 用户需求:可以理解为就是甲方提出需求,如果没有甲方,那么就是终端用…

“注释: 爱恨交织的双重标准?解析注释在代码开发中的作用。”

文章目录 每日一句正能量前言观点和故事程序员不写注释的原因是什么如何才能写出漂亮的注释后记 每日一句正能量 水与水之间有距离,但地心下直相牵,人与人之间有距离,但心里时刻挂念,发条短信道声晚安,梦里我们相见。 …

岛屿的数量

题目描述 给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外,你可以…

Programming abstractions in C阅读笔记:p176-p178

《Programming Abstractions In C》学习第59天,p176-p178总结。 一、技术总结 1.addtive sequences tn tn-1 tn-2 序列:3, 7, 10, 17, 27, 44, 71, 115, 186, 301, 487, 788, 1275, … p177, As a general class, the sequences that follow this…

面试总结-Redis篇章(十二)——Redis是单线程的,为什么还那么快

Redis是单线程的,为什么还那么快 Redis是单线程的,为什么还那么快什么是IO多路复用 阻塞IO非阻塞IOIO多路复用 Redis是单线程的,为什么还那么快 Redis是纯内存操作,执行速度非常快采用单线程,避免不必要的上下文切换可…

【面试经典150 | 哈希表】单词规律

文章目录 写在前面Tag题目来源题目解读解题思路方法一:哈希表 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更…… 专栏内容以分析题目为主,并附带一些对于本题涉及到的数据结构等内…

mysql面试题34:Hash索引和B+树区别是什么?在设计索引怎么选择?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:Hash索引和B+树区别是什么?在设计索引怎么选择? 在MySQL中,Hash索引和B+树索引是两种常见的索引类型,他们有以下区别: 数据结构:Hash索引:…

999、Android --问题处理-1

1、打开其他人开发的程序报错 Caused by: org.gradle.api.internal.plugins.PluginApplicationException: Faile to apply plugin […] 解决问题: preoject视图下,文件gradle.properties添加语句 android.overridePathChecktrue

Spring Framework中的org.springframework.stereotype包:为你的应用程序定义“典型”

🥭导言: Spring Framework是一个强大的开发框架,它大大简化了Java应用程序的开发和管理。org.springframework.stereotype 注解家族是Spring的核心注解之一,它们允许开发人员定义和标识不同类型的组件,以便Spring能够…

Java | 类、实例初始化 、方法重写规则

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ 类、实例初始化 、方法重写规则 类的初始化过…

PL2303驱动程序不支持WINDOWS 11及后续版本

到网上下载PL2303的驱动程序, 双击安装这个驱动程序,安装完成后双击这个端口, 这个端口的驱动程序是我们刚才安装的,选中 点击下一步,问题解决。如下图已经没有之前的提示了

NoSQL数据库(林子雨慕课课程)

文章目录 5.1 NoSQL数据库5.2 NoSQL和关系数据库的比较5.3 四大类型NoSQL数据库5.3.1 键值数据库和列族数据库5.3.2 文档数据库、图数据库、以及不同数据库比较分析 5.4 NoSQL数据库的理论基石CAP理论:BASE理论:Eventual consistency(最终一致…

Stretched mesh

https://www.particleincell.com/2015/stretched-mesh/

2023年中国光子嫩肤行业市场规模及市场格局分析[图]

随时间推移,光子嫩肤行业朝着功效提升和风险降低的方向发展,所使用的强脉冲光技术不断升级革新。因此,在原有的强脉冲光子嫩肤项目基础上,延伸出完美强脉冲光技术、窄谱强脉冲光技术应用的光子嫩肤细分品类。 光子嫩肤分类 资料来…

绘制一个五角红星图形(Python)

#Five_Star.py from turtle import * #导入turtle库 pensize(10) #设置画笔的宽度 begin_fill() #开始绘画 pencolor(red) #设置画笔颜色 fillcolor(yellow) #设置填充颜色 for i in range(5): #设置一个…

【C++】运算符重载案例 - 字符串类 ② ( 重载 等号 = 运算符 | 重载 数组下标 [] 操作符 | 完整代码示例 )

文章目录 一、重载 等号 运算符1、等号 运算符 与 拷贝构造函数2、重载 等号 运算符 - 右操作数为 String 对象3、不同的右操作数对应的 重载运算符函数 二、重载 下标 [] 运算符三、完整代码示例1、String.h 类头文件2、String.cpp 类实现3、Test.cpp 测试类4、执行结果 一…

多线程(线程互斥)

抢票代码编写 学习了前面有关线程库的操作后,我们就可以模拟抢票的过程 假设我们创建四个线程,分别代表我们的用户 然后设定总票数为1000张,四个线程分别将进行循环抢票操作,其实就是循环对票数进行打印,并进行对应的…

【小记】Java将字符串中的EL表达式动态转换为Map中的值

项目中碰到了这样的问题&#xff0c;例如数据库中有一个字符串模版如下&#xff1a; ${userNamme}开启了一个新的${project}我们要替换里面的${}表达式&#xff0c;来实现动态的生成完整的信息~实现方式很简单如下&#xff1a; 引入pom依赖&#xff1a; <dependency>&l…

【附代码】使用Shapely计算多边形外扩与收缩

文章目录 相关文献效果图代码 作者&#xff1a;小猪快跑 基础数学&计算数学&#xff0c;从事优化领域5年&#xff0c;主要研究方向&#xff1a;MIP求解器、整数规划、随机规划、智能优化算法 本文档介绍如何使用 Shapely Python 包 计算多边形外扩与收缩。 如有错误&…

软件测试面试,5年测试工程师竟被面试官10分钟pass,这些问题一定要注意啊!

随着软件测试领域对于技术要求越来越清晰&#xff0c;到现在测试人员在市场上的岗位需求也变得越来越复杂。极大部分的企业都开始对自动化测试岗位有了更多的需要。自然而然&#xff0c;面试就相对于非常重要了。 网络上有着各式各样的测试框架的存在&#xff0c;我也不知道我…