【JVM】JVM的内存区域划分

JVM的内存区域划分


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

Java虚拟机栈

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

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

程序计数器

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

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

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

方法区

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

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

运行时常量池

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

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

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

相关推荐
Tattoo_Welkin6 分钟前
IDEA 中常用操作记载
java·elasticsearch·intellij-idea
音符犹如代码11 分钟前
Arthas classloader + sc 实战:JVM 类加载与手动加载
java·jvm·spring boot
乐启国际旅行社有限公司26 分钟前
Java线程池实战:文旅系统批量任务性能优化(团期生成/数据导出)
java·开发语言·性能优化
Listen·Rain35 分钟前
用AI开发出一个AI
java·人工智能·spring boot·tomcat·intellij-idea·mybatis·visual studio
AI人工智能+电脑小能手37 分钟前
【大白话说Java面试题 第203题】【09_Zookeeper篇】第4题:ZooKeeper 的节点类型有哪些?
java·zookeeper·分布式锁·分布式协调·znode
宸津-代码粉碎机1 小时前
告别手动Jar部署!生产级无损热部署方案,彻底解决OOM与更新失效问题
java·大数据·开发语言·人工智能·python
米码收割机1 小时前
【移动】线上购物移动端网站(源码+文档)【独一无二】
java·开发语言·前端·python·django
无敌秋1 小时前
python/c++/java上云
java·c++·python
都叫我大帅哥1 小时前
BCrypt 还是 Argon2?Spring Security 密码加密方案深度解析与实战对比
java·spring
IKUN家族9 小时前
Spring MVC(一)
java·spring·mvc