JVM内存模型(二)

JVM内存模型

定义:

​ JVM内存模型,又称为运行时数据区。【区别Java内存模型

内存模型

紫色 —— 线程私有

浅黄色 —— 线程共享

虚拟机栈

定义:

虚拟机栈是一个线程私有的、FILO的结构。

一个线程到来时,从虚拟机栈中,分配一块内存空间给线程私有

栈帧

定义:

​ 每个线程中,调用一个方法就会产生一个对应的栈帧压入线程栈中 【随方法生成】

组成:

名称解释
局部变量表存放方法内的局部变量 【数组
操作数栈用来存放计算过程的数 【辅助栈
动态链接指向==运行时常量池==所属的方法 【存一个内存地址
方法出口返回上层方法被调用的位置

动态链接:

​ 在Class文件的常量池中存有大量的符号引用

  • 一部分符号引用 在类加载阶段,转化为 直接引用
  • 一部分符号引用 在每一次运行期间,转化为 直接引用动态链接

程序计数器

定义:

​ 程序计数器是 线程私有 的,用于记录当前线程所执行字节码的内存地址

作用:

​ 在多线程执行过程中,发生上下文切换而导致的线程挂起,程序计数器记录该线程的字节码执行位置,具有 线程隔离 的特性

本地方法栈

定义:

​ 本地方法栈是 线程私有 的,当程序调用一个native方法时,该方法会被压入本地方法栈,在 执行引擎 中执行时加载本地方法库。

定义:

​ 线程共有的一块 临界区,存储以下资源

  • 对象实例
  • 数组
  • 字符串常量池

组成:

名称容量作用
老年代2/3【堆空间存放长期对象 【FullGC的对象
eden区8/10【年轻代存放短期对象
survivor0区1/10【年轻代用于miniorGC
survivor1区1/10【年轻代用于miniorGC

与GC关系:

  • minor GC —— 对于堆中的==年轻代进行垃圾回收==
  • fullGC —— 对于==整个堆+方法区进行垃圾回收==

方法区

定义:

​ 在jdk7之前,这块区域叫做永久代【包含字符串常量池】

​ 在jdk8,这块区域叫做元空间【移除字符串常量池】

​ 方法区是用物理机的内存,而不是JVM的内存,存放以下信息

  • 类元信息
  • 运行时常量池
  • 静态变量 static
  • 常量 —— final static
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值