Ⅲ、运行时数据区

一、概述

14833822-2d42463c9bb0e6a7.png
运行时数据区

14833822-10636280bb8bd8e6.png
1.8后运行时数据区

14833822-8798500d2643c5cf.png
线程与进程独立

14833822-5de1af180cda381e.png
jvm线程与cpu线程

二、程序计数器(PC寄存器)

14833822-869410d62578b0c6.png
简介

14833822-3e65a34b0fdb7523.png

14833822-84cd53a0d99428df.png
详细作用

14833822-ce0f5999de6a2e4a.png

14833822-6537bd71e66ebd9f.png
程序计数器作用

14833822-91c6fb929c2a20d2.png
问题一

14833822-54617b5652cd7dbc.png
问题二
注意:

并行:同一时间可以同时执行多个线程,区别于串行;
并发:同一时间内只有一个线程在执行,cpu一个核在多个线程之间切换,交替执行。

三、虚拟机栈

14833822-358796c7ae8e0ac3.png

14833822-52f91e156a812d6f.png
堆和栈

14833822-7f28da085dabe497.png
基本内容

14833822-c93ccb1feabf42db.png
特点

14833822-683e0b2eb419a204.png
虚拟机栈异常

StackOverFlow经常在递归中出现。


14833822-64b561e3c052e8bc.png
设置虚拟机栈内存大小

14833822-fef31f21cb8fd1cf.png

14833822-7f8a55fbd33d7a8b.png
栈帧

14833822-7ec1965c943c2b58.png

14833822-0d38a5c6fa2df132.png
栈运行

14833822-94e936be1d717358.png
栈帧的组成

3.1 局部变量表

14833822-141cd0095d6da388.png

14833822-37a53089589496a7.png
局部变量与栈帧,栈

使用jclasslib可以查看class文件信息


14833822-33db97392061124c.png
jclasslib

14833822-2d978eacc1e370ac.png

14833822-d58c3a789517c0ea.png
slot

14833822-eb1e0c6c38bf78de.png
slot重复利用

成员变量中类变量会在链接中赋默认值,初始化中赋给定值;实例变量会在对象创建时在堆空间分配实例变量空间并赋默认值。
局部变量必须显式赋值,否则编译不通过。


14833822-b7e496c104a9f8be.png
补充

3.2 操作数栈

14833822-2bde0bab42cbd572.png
定义

14833822-56629c9bb70501a1.png

14833822-bb89ebf8f7897a4d.png
作用

局部变量表相当于元件库,操作数栈相当于工作区元件,执行引擎只对操作数栈进行操作。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值