JVM虚拟机学习笔记之-5. 字节码执行引擎

慕课网JVM视频

1. 字节码执行引擎工作概览

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. 栈帧

2.1 栈帧概述和概念结构

在这里插入图片描述
在这里插入图片描述

2.2 局部变量表

2.2.1 局部变量表分配规则

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 如果是静态方法,没有指向this的位
    在这里插入图片描述

在这里插入图片描述

2.2.2 局部变量表回收机制
  • slot是可以复用的
    在这里插入图片描述
  • 初始有6MB可用
    在这里插入图片描述
  • 创建2MB的数组后,还剩4MB左右空间可用
    在这里插入图片描述
    在这里插入图片描述
  • 主动触发gc,发现没有回收创建数组的空间
    在这里插入图片描述
    在这里插入图片描述
  • 但是如果再定义一个变量,再触发gc发现,内存被回收了
    在这里插入图片描述
  • 原因是,由于slot的复用机制,当slot槽位没有被覆盖时,一直存在,就会指向堆空间,垃圾回收器不会去收集,只有被覆盖了,原有的栈中的变量不存在,就不会指向堆空间,对应的堆空间就会被回收
  • 或者是显示将数组变量赋值位null,表明可以被回收

在这里插入图片描述

2.3 操作数栈

在这里插入图片描述

在这里插入图片描述

  • 栈的加载过程
    在这里插入图片描述

2.4 动态连接

在这里插入图片描述

2.5 方法返回地址

  • 方法执行后返回的地址

2.6 方法调用

在这里插入图片描述

3. 分派

3.1 静态分派

在这里插入图片描述

  • 测试
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

3.2 动态分派

在这里插入图片描述

  • 测试
    在这里插入图片描述
    在这里插入图片描述

3.3 单分派和多分派

在这里插入图片描述
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值