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
    评论
JVMJava虚拟机)模型是指Java程序在运行时的执行环境,包括JVM的组成部分和它们的工作原理。JVM内存模型是指Java虚拟机管理程序运行时内存的方式,包括内存划分、内存分配和对象回收等机制。 JVM模型的组成部分包括类加载器、解释器、即时编译器、垃圾收集器等。类加载器负责将Java类加载到JVM中,并将其转换为可执行代码;解释器负责解释字节码并执行相应的指令;即时编译器则将频繁执行的代码编译成本地机器码,以提高程序的执行效率;垃圾收集器则负责回收程序运行时不再使用的内存。 JVM内存模型规定了Java程序运行时内存的分配和管理方式。JVM内存模型将内存划分为不同的区域,包括方法区、堆、虚拟机栈、本地方法栈和程序计数器。其中,堆是Java程序运行时内存中最大的区域,用于存储对象实例。虚拟机栈和本地方法栈则用于存储程序执行时的局部变量和方法调用信息。方法区用于存储已加载的类信息、常量池、静态变量等数据。程序计数器则用于记录当前线程所执行的字节码指令位置。 JVM内存模型还包括垃圾回收机制,用于自动回收程序运行时不再使用的内存。垃圾回收机制采用标记-清除、复制、标记-整理等不同的算法来回收内存。 总之,JVM模型和JVM内存模型Java程序运行时的重要组成部分,了解和掌握它们的工作原理对于编写高效、稳定的Java程序至关重要。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值