微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JVM内存结构

JVM内存结构大致如下:

其中白色块部分是线程共享的,粉色块是线程隔离的

堆是JVM中最大的一块内存空间,绝大部分对象都存在堆内存内,然后堆又可以做以下细分:

虚拟机栈

虚拟机栈由栈帧组成,每一次方法调用都会创建一个栈帧,然后去压栈。当方法返回时,则对应着出栈操作。

栈帧中包含局部变量表、操作数栈、指向运行时常量池的引用、方法返回地址、动态链接

方法里的变量在执行时,会从局部变量表或对象实例的字段里复制变量或常量,放入操作数栈,计算时则从操作数栈里放入或取走数据。

Powered by Ad.Plus

本地方法

本地方法栈和虚拟机栈功能类似,虚拟机栈管理JAVA方法,而本地方法栈管理NATIVE方法

程序计数器

用来记录各个线程执行的字节码地址

方法

方法区包含类信息、运行时常量池、字符串常量池和静态变量

静态常量池:也叫class文件常量池,主要存放:字面量:例如文本字符串、final修饰的常量符号引用:例如类和接口的全限定名、字段的名称和描述符、方法名称和描述符运行时常量池:当类加载到内存中后,JVM就会将静态常量池中的内容存放到运行时的常量池中;运行时常量池里面存储的主要是编译器间生成的字面量、符号引用等等字符串常量池:也可以理解成运行时常量池分出来的一部分,类加载到内存的时候,字符串会存到字符串常量池里面

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐