【JVM】JVM的内存区域划分

JVM的内存区域划分


程序中创建的所有对象都保存在堆中

Java虚拟机栈

Java虚拟机栈的生命周期和线程相同,描述的是Java方法执行的内存模型,每个方法在执行的时候都会同时创建一个栈帧用于存储局部变量表,操作栈,动态链接,方法返回地址等信息

递归存放着方法的调用关系

程序计数器

用来记录当前线程执行的行号,记录的当前线程执行的下一条指令的内存地址

如果当前线程正在执行的是一个Java方法,这个计数器记录是正在执行的虚拟机字节码指令的地址如果正在执行的是一个native方法,这个计数器值为空

程序计数器的内存区域是唯一一个在jvm中没有规定任何oom情况的区域

方法区

用来存储虚拟机加载的类信息,常量,静态变量,即时编译器后的代码等数据
JDK7时此区域叫做永久代,JDK8中叫元空间

存放类(.class文件)被加载到内存后放的地方 ,类对象,类方法的内容 static修饰的

运行时常量池

运行时常量池是方法的一部分,存放字面量和符号引用

字面量:字符串(JDK8之后 移动到堆中) final常量 基本数据类型的值

符号引用: 类和结构的完全限定名,字段的名称和描述符,方法的名称和描述符

相关推荐
数据小小爬虫6 分钟前
如何利用Java爬虫获得1688商品详情
java·开发语言·爬虫
NiNg_1_23410 分钟前
IntelliJ Idea常用快捷键详解
java·ide·intellij-idea
小学鸡!12 分钟前
IDEA工具使用介绍、IDEA常用设置以及如何集成Git版本控制工具
java·git·intellij-idea
添砖,加瓦23 分钟前
java—网络编程TCP和UDP
java
晚安~~25 分钟前
考研互学互助系统|Java|SSM|VUE| 前后端分离
java·开发语言·tomcat·maven
咕德猫宁丶40 分钟前
Spring Boot + MinIO 实现分段、断点续传,让文件传输更高效
java·spring boot·后端·中间件
阿新-1 小时前
解决Spring boot集成quartz时service注入失败为null的问题
java·spring boot·后端
KaiPeng-Nie1 小时前
代码随想录day29 | leetcode 134.加油站 135.分发糖果 860.柠檬水找零 406.根据身高重建队列
java·算法·leetcode·职场和发展·贪心算法
重整旗鼓~1 小时前
8.若依系统监控与定时任务
java·spring boot
fanchael_kui1 小时前
elasticsearch-java客户端jar包中各模块的应用梳理
java·大数据·elasticsearch