JVM入门学习笔记——上篇:内存与垃圾回收(3-7)

3、运行时数据区概述及线程

在这里插入图片描述

一、概述

在这里插入图片描述
按照HotSpot虚拟机讲解,JRockit和J9是没有方法区的。
在这里插入图片描述

运行时数据区的内部结构

运行时数据区分为:元空间、堆、虚拟机栈、程序计数器、本地方法区。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

关于线程间共享的说明

在这里插入图片描述

二、线程

在这里插入图片描述

JVM系统线程

在这里插入图片描述

4、程序计数器/PC寄存器(PC Rigister)

在这里插入图片描述

一、PC Rigister介绍

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

二、举例说明

	int i = 10;
	int j = 20;
	int k = i + j;
	
	String s = "abc";
	System.out.println(i);
	System.out.println(k);

在这里插入图片描述

三、两个常见问题

问题一

在这里插入图片描述
用于记录下一条要执行的字节码指令。

问题二

在这里插入图片描述
因为CPU会在线程间切换着运行,所以每个线程都需要记录自己下一条执行什么字节码指令。
在这里插入图片描述

CPU时间片

在这里插入图片描述

5、虚拟机栈

在这里插入图片描述

一、虚拟机栈概述

虚拟机出现的背景

在这里插入图片描述

内存中的栈与堆

在这里插入图片描述

虚拟机栈基本内容

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

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

二、栈的存储单位

在这里插入图片描述
一个线程是一个栈,一个方法是一个栈帧。

栈运行原理

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

栈帧的内部结构

在这里插入图片描述
在这里插入图片描述
栈帧分为:局部变量表、操作数栈、动态链接、方法返回地址、一些附加信息(后三个合一起可称为帧数据区)。
在这里插入图片描述

三、局部变量表(Local Variables)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果此方法不是静态的,那么此局部变量表的第一位自动写入this。
在这里插入图片描述

关于变量槽Slot的理解

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

Slot的重复利用

在这里插入图片描述

静态变量与局部变量的对比

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
JVM会为成员变量进行初始化赋值,但不会为局部变量进行初始化,需要我们自己给局部变量赋值。
在这里插入图片描述

四、操作数栈(Operand Stack)

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

五、代码追踪

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

六、栈顶缓存技术

在这里插入图片描述

七、动态链接(指向运行时常量池的方法引用)

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

八、方法的调用:解析与分派

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

虚方法与非虚方法

在这里插入图片描述

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

关于invokedynamic指令

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

方法重写的本质

在这里插入图片描述

虚方法表

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

九、方法返回地址(Return Address)

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

十、一些附加信息

在这里插入图片描述
在这里插入图片描述
栈帧中不一定会有。

十一、栈的相关面试题

在这里插入图片描述

6、本地方法接口

在这里插入图片描述
在这里插入图片描述
native修饰的方法就是本地方法。此方法虽然看起来像是没有方法体,实际上它是有方法体的,只不过它的方法体是用非java代码实现的,和abstract抽象方法不相同。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7、本地方法栈

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

下一篇笔记:JVM入门学习笔记——上篇:内存与垃圾回收(8-9)

学习视频(p39-p65):https://www.bilibili.com/video/BV1PJ411n7xZ?p=39

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值