2.JVM常识之 运行时数据区
创始人
2024-06-01 12:44:53
0

1.JVM核心组成

在这里插入图片描述

2.JVM 运行时数据区(jdk8)

程序计数器:线程私有,当前线程所执行字节码的行号指示器
jvm栈:线程私有,Java 虚拟机栈为 JVM 执行 Java 方法服务
本地方法栈:线程私有,本地方法栈则为 JVM 使用到的 Native 方法服务
:线程共享, 主要存放对象实例以及数组
方法区(元空间): 线程共享, 存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码

2.1程序计数器
每个线程都有一个独立的程序计数器,为了确保线程切换后(上下文切换)能恢复到正确的执行位置。指向下一个将要执行的指令代码。如果线程执行 Java 方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址;如果执行的是 Native 方法,计数器值为Undefined。不会出现OOM问题。

2.2jvm栈
-Xss 设置栈大小。一般是kb级别 256k
每个方法在执行时都会创建一个栈帧。栈帧中存储了局部变量表、操作数栈、动态连接和方法出口等信息。每个方法从调用到运行结束的过程,就对应着一个栈帧在栈中压栈到出栈的过程。(栈FILO)
局部变量表中存储了基本数据类型(boolean、byte、char、short、int、float、long、double)的局部变量(包括参数)、和对象的引用地址(String、数组、对象等),但是不存储对象的内容。局部变量表所需的内存空间在编译期间完成分配,在方法运行期间不会改变局部变量表的大小。
操作数栈的元素可以是任意的Java数据类型。可以理解为栈帧中用于计算的临时数据存储区。

StackOverflowError:栈溢出错误。一个线程在计算时所需要用到栈大小 > 配置允许最大的栈大小。例如方法递归不给出口。
OutOfMemoryError:内存不足

2.3本地方法栈
native方法调用信息,由C 或者 C++实现的接口

2.4堆
堆是Java虚拟机所管理的内存中最大的一块存储区域。堆内存被所有线程共享。主要存放使用new关键字创建的对象(对象实例等)。所有对象实例以及数组都要在堆上分配。垃圾收集器就是根据GC算法,收集堆上对象所占用的内存空间(收集的是对象占用的空间而不是对象本身)。
在这里插入图片描述
在这里插入图片描述
Java堆分为年轻代(Young Generation)老年代(Old Generation)默认比为1:2;
年轻代又分为
伊甸园(Eden)和幸存区(Survivor区)
;幸存区又分为From Survivor空间和 To Survivor空间。 8:1:1
年轻代存储“新生对象”,我们新创建的对象存储在年轻代中。当年轻内存占满后,会触发Minor GC(young GC),清理年轻代内存空间。
老年代存储长期存活的对象和大对象。年轻代中存储的对象,经过多次GC后仍然存活的对象会移动到老年代中进行存储。老年代空间占满后,会触发Full GC。
注:Full GC是清理整个堆空间,包括年轻代和老年代还有元空间(很难清理多少垃圾)。如果Full GC之后,堆中仍然无法存储对象,就会抛出OutOfMemoryError异常。

2.5 方法区(Method Area)
所有线程共享的区间,用于存储已被虚拟机加载的类的元信息常量静态变量。即时编译器编译后的代码。静态变量+常量+类元信息(版本、方法、字段等)+运行时常量池存在方法区中。
注:
JDK1.8 使用元空间 MetaSpace 替代方法区,元空间并不在 JVM中,而是使用本地内存。元空间两个参数:

 MetaSpaceSize:初始化元空间大小,控制发生GC阈值MaxMetaspaceSize : 限制元空间大小上限,防止异常占用过多物理内存

相关内容

热门资讯

安卓系统如关闭微信 你有没有想过,手机里的微信是不是有时候太占内存了?或者,你只是想给手机来个彻底的大扫除,那么,关闭安...
按键精灵安卓系统命令,按键精灵... 你有没有想过,在手机上玩游戏或者处理一些重复性任务时,是不是能有个小助手帮你轻松搞定呢?没错,今天就...
qq飞车安卓系统怎么转移苹果系... 你是不是也和我一样,对QQ飞车这款游戏爱得深沉呢?不过,最近换了个新手机,从安卓系统换到了苹果系统,...
安卓手机系统bug大全,全面解... 你有没有遇到过那种让人抓狂的安卓手机系统bug?那种让你觉得手机突然变成了“智障”的感觉,真是让人头...
华为怎么改安卓系统,打造独特用... 你有没有发现,华为的手机用起来就是不一样?那流畅的体验,那独特的系统,简直让人爱不释手。但是,你知道...
安卓手机驱动电脑系统,探索跨界... 你有没有想过,你的安卓手机竟然能成为电脑的得力助手?没错,就是那个你每天不离手的安卓手机,现在它不仅...
电脑怎么给安卓系统安装,详细步... 你有没有想过,你的安卓手机或者平板电脑,怎么才能装上那些让你眼前一亮的新系统呢?别急,今天就来手把手...
看戏机安卓4.2系统,畅享视听... 你有没有想过,在手机上也能体验看戏的乐趣?没错,就是那种坐在家里,就能欣赏到精彩戏曲的感觉。今天,我...
手机安卓系统版本更新,从初代到... 你有没有发现,你的手机最近是不是总在提醒你更新安卓系统呢?没错,手机安卓系统版本更新,这个话题可是最...
安卓系统不好怎么解决 你是不是也和我一样,对安卓系统的小毛病头疼不已?手机卡顿、电池续航短、广告满天飞,这些问题是不是让你...
安卓系统硬件装在哪里,揭秘硬件... 你有没有想过,那个陪伴你每天刷抖音、玩游戏、办公的安卓系统,它其实就藏在你手中的那块小小的硬件里呢?...
王者系统转换软件安卓,轻松实现... 你有没有想过,你的手机里那些游戏,是不是也能来个华丽丽的变身呢?没错,今天就要给你揭秘一个神奇的小玩...
安卓手机id转苹果系统,轻松实... 你有没有想过,把安卓手机上的ID转到苹果系统上呢?这听起来是不是有点像魔法一样神奇?别急,今天我就要...
不要默认安卓系统的短信,探索无... 你有没有发现,手机里的短信功能好像变得有点不一样了呢?没错,就是那个我们每天都要用的安卓系统短信,它...
原生系统安卓卡刷包,轻松升级体... 你有没有遇到过这样的情况:手机用着用着就卡了,尤其是那些搭载了原生安卓系统的手机,有时候真的让人头疼...
华为能安装安卓系统,畅享智能生... 你有没有想过,华为的手机竟然也能安装安卓系统呢?这可不是什么天方夜谭,而是实实在在的技术突破。今天,...
安卓9.0系统好在哪,引领智能... 你有没有发现,你的手机最近是不是变得聪明多了?没错,这就是安卓9.0系统的魔力!今天,就让我带你一起...
安卓与系统有联系吗,揭秘二者之... 你有没有想过,你的安卓手机里那些花花绿绿的图标背后,其实隐藏着一个庞大的系统世界?没错,安卓与系统之...
z8350安卓系统内存,性能与... 你有没有发现,现在手机更新换代的速度简直就像坐上了火箭!这不,最近有个小伙伴问我:“你知道z8350...
安卓手机车机系统推荐,安全便捷... 你有没有想过,你的安卓手机车机系统是不是该换换口味了?想象当你驾驶着爱车,车载系统就像你的贴心小秘书...