jvm-内存模型

一、内存模型

image.png

image.png

线程私有:虚拟机栈,本地方法栈,程序计数器
线程共享:方法区,堆

1.程序计数器

是当前线程所执行字节码的行号指令器,线程私有,如果执行的是Java方法,计数器记录的是虚拟机字节码指令的地址,如果执行的是本地(native)方法,则为空

2.虚拟机栈

描述Java方法执行的内存模型,每个方法在执行时创建一个栈帧,用于存储局部变量表、操作数栈、动态链接、方法出口灯信息。方法调用到完成,对应着一个栈帧在虚拟机栈中从入栈到出栈的过程


image.png

3.本地方法区(本地方法栈)

本地方法区和虚拟机栈作用类似,区别是虚拟机栈为Java方法服务,而本地方法栈则为Navicat方法服务。在Hotspot vm中直接将本地方法栈和虚拟机栈合二为一

4.堆

是被线程共享的一块内存区域,创建的对象和数组都放在堆中,也是垃圾回收的主要区域。从GC的角度还可以细分为新生代(Eden、from survivor、to survivor)和老年代

5.方法区

即我们常说的永久代,用于存储被JVM加载的类信息,常量,静态变量,即时编译器编译后的代码等数据。Hotspot将GC分代收集扩展至方法区,即使用Java堆得永久代来实现方法区
加载的类信息包括版本,方法,字段。接口等描述信息,还会有 编译器生成的各种字面量和符号引用(存放在运行时常量池)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1 CPU和内存的交互 了解jvm内存模型前,了解下cpu和计算机内存的交互情况。【因为Java虚拟机内存模型定义...
    Garwer阅读 374,412评论 54 551
  • 1 CPU和内存的交互 了解jvm内存模型前,了解下cpu和计算机内存的交互情况。【因为Java虚拟机内存模型定义...
    Zal哥哥阅读 279评论 0 2
  • 一、学习jvm的目的 jmm规范(java memory model),定义了多线程环境下,线程间的交互行为,保证...
    空杯成长笔记阅读 454评论 0 0
  • 前言 近几个月学习了儒猿技术窝的专栏《从 0 开始带你成为JVM实战高手[https://apppukyptrl1...
    terry蒋阅读 937评论 0 1
  • 1,程序计数器 1.1 用于存储每个线程下一步将执行的jvm指令 1.2 如该方法是Native的,则不存储任何信...
    lqq2019阅读 338评论 0 0

友情链接更多精彩内容