【JVM】JVM的内存区域划分

JVM的内存区域划分


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

Java虚拟机栈

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

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

程序计数器

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

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

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

方法区

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

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

运行时常量池

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

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

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

相关推荐
Goldn.18 小时前
Java核心技术栈全景解析:从Web开发到AI融合
java· spring boot· 微服务· ai· jvm· maven· hibernate
李慕婉学姐19 小时前
【开题答辩过程】以《基于Android的出租车运行监测系统设计与实现》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
java·后端·vue
m0_7400437319 小时前
SpringBoot05-配置文件-热加载/日志框架slf4j/接口文档工具Swagger/Knife4j
java·spring boot·后端·log4j
编织幻境的妖19 小时前
SQL查询连续登录用户方法详解
java·数据库·sql
未若君雅裁19 小时前
JVM面试篇总结
java·jvm·面试
kk哥889920 小时前
C++ 对象 核心介绍
java·jvm·c++
招风的黑耳20 小时前
我用SpringBoot撸了一个智慧水务监控平台
java·spring boot·后端
xunyan623420 小时前
面向对象(下)-接口的理解
java·开发语言
程序员游老板20 小时前
基于SpringBoot3+vue3的爱心陪诊平台
java·spring boot·毕业设计·软件工程·课程设计·信息与通信
期待のcode20 小时前
Springboot核心构建插件
java·spring boot·后端