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 : 限制元空间大小上限,防止异常占用过多物理内存

相关内容

热门资讯

小米平板4 系统安卓,小米平板... 你有没有想过,你的小米平板4其实是个隐藏的安卓高手呢?它不仅能刷上各种系统,还能让你体验到不一样的科...
ios系统转安卓系统王者荣耀,... 亲爱的王者荣耀玩家们,你们是不是也和我一样,曾经因为换手机而烦恼过呢?从iOS系统转到安卓系统,王者...
安卓系统怎么调整模式,个性化定... 亲爱的手机控们,你是否曾对着你的安卓手机犯愁,不知道怎么调整那些神秘的系统模式?别急,今天就来给你揭...
meui还是安卓系统吗,基于M... 亲爱的手机控们,你是否曾在深夜里对着手机屏幕,纠结着是选择MIUI还是安卓系统呢?这就像是在选择一款...
安卓系统怎么输入繁体,繁体中文... 你有没有想过,在手机上打繁体字竟然也能变得如此简单?没错,就是那种看起来有点儿复古,却又充满韵味的老...
linux系统怎么安装安卓,L... 亲爱的Linux爱好者们,你是否曾想过在Linux系统上体验安卓的魅力?别再犹豫了,今天就来手把手教...
安卓系统微信昵称,揭秘个性与情... 亲爱的微信迷们,你们有没有想过,在微信的世界里,给自己起一个独特的昵称,是不是就像给手机换了个新衣裳...
安卓系统ping不同通,快速区... 你有没有想过,你的安卓手机里其实也藏着一个小小的网络侦探呢?没错,就是那个神秘的ping命令!今天,...
安卓车机系统2.1,智能驾驶体... 你有没有发现,现在开车出门,车机系统就像是个贴心的智能小助手,不仅能导航,还能帮你找歌、控制空调,甚...
安卓系统彻底删除软件,轻松卸载... 手机里的软件越来越多,是不是感觉内存不够用了?别急,今天就来教你怎么在安卓手机上彻底删除那些占地方又...
安卓底层系统linux,架构解... 亲爱的读者们,你是否曾好奇过,那些在我们手机上流畅运行的安卓应用,背后究竟隐藏着怎样的秘密?今天,就...
安卓子系统内存设置,安卓系统内... 你有没有发现,自从升级了Windows 11,安卓子系统成了你电脑上的新宠儿?不过,这小家伙有时候还...
安卓系统手机哪些好用,助你轻松... 你有没有想过,在这个手机当道的世界里,哪款安卓系统手机能让你爱不释手呢?别急,今天我就来给你揭秘那些...
股票顶盘系统安卓,科联系统(0... 你有没有想过,在手机上也能轻松管理你的股票投资呢?没错,现在就有这么一款神器——股票顶盘系统安卓版。...
文都系统和安卓,基于文都系统的... 探索文都系统:安卓平台上的学习新天地在这个信息爆炸的时代,学习资源无处不在,而如何高效地利用这些资源...
安卓系统存在几年了吗,十余年创... 亲爱的读者们,你们有没有想过,那个陪伴我们日常生活的安卓系统,已经存在了多久了呢?今天,就让我带你一...
电视安卓系统8.0好吗,体验升... 亲爱的电视迷们,今天咱们来聊聊一个让电视焕然一新的话题——电视安卓系统8.0。你是不是也好奇,这个新...
用电脑恢复安卓系统,数据安全无... 亲爱的手机控们,是不是觉得你的安卓手机最近有点儿“闹脾气”,不是卡顿就是闪退,甚至有时候还突然“罢工...
安卓8录制系统声音,安卓8系统... 你有没有想过,用安卓手机录个视频,还能把系统里的声音也一起录下来?这听起来是不是很酷?想象你正在玩一...
安卓系统体感游戏,引领健康娱乐... 哎呀呀,你有没有想过,在沙发上就能动起来,和游戏里的角色一起跳跳蹦蹦?现在,这不再是梦想啦!随着科技...