JVM-Java虚拟机-一文读懂-小白秒懂,老鸟进阶,必考面经

目录

JVM定义

Java Virtual Machine组成结构

各部分详解

 0、类加载器

1、栈是运行的单位,堆是存储的单位

2、栈中存放各个栈帧

3、方法区——多线程共享区域


JVM定义

  1. 运行Java程序的平台
  2. 内存结构、 垃圾回收、 类加载、 性能调优、 JVM 自身优化技术、 执行引擎、 类文件结构、 监控工具等。

下面我们详细聊聊JVM的内存结构(JMM)


Java Virtual Machine组成结构

  • 虚拟机栈:JVM 运行过程中存储当前线程运行方法所需的数据, 指令、 返回地址
  • 本地方法栈:Java程序自动调用底层C/C++函数库
  • 程序计数器:当前线程执行的字节码的行号指示器
  • 堆:存放我们申请的对象,也就是实例化对象,数组等
  • 方法区:存放虚拟机加载的类相关信息,包括类信息,静态域(静态变量和静态方法),常量池(const val修饰的变量)、字符串常量池、编译后代码等

各部分详解

 0、类加载器

JVM要执行文件,需要把编译后的.class文件装入类加载器

1、栈是运行的单位,堆是存储的单位

下图表示,程序计数器指向的代码mian函数执行后

main()内部生成的实例化对象A和对象B保存在

中存入在指向A,B堆内存的指针

2、栈中存放各个栈帧

栈帧:在一个线程里,每当调用一个方法就会创建一个栈帧,并入栈,当方法执行完以后进行出栈

栈帧包括:局部变量表、操作数栈、动态链接、返回地址

  • 局部变量表:存放基本数据类型的变量或者对象的堆内存地址
  • 操作数栈:存储方法运行时执行引擎需要计算的数据
  • 动态链接:符号引用
  • 返回地址:方法执行完,将程序计数器中地址返回,方便后续栈帧执行

3、方法区——多线程共享区域

  • 常量
  • 静态属性,方法
  • 类信息
  • 字符串

  • 12
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值