【JVM】虚拟机初见-运行时数据区图解

本文是听咕泡XX公开课视频整理的笔记,较书本更为总结,感谢。


计算机模型(汇编知识):数据集(数据)、指令集(操作指令,+-等)、控制集(分支循环)




JVM运行时的数据区:


程序计数器(每个线程都有):

定义:存储指向当前线程正在运行的指令的地址、行号(用来记录线程切换后寻回地址)

执行native方法时程序计数器记录为空。


虚拟机栈(栈的大小不会被限制,XXS代表栈的深度):

定义:指向当前线程运行方法时所需要的数据、指令、返回地址。


线程执行方法时,需要出栈入栈,(一个栈是一条线程运行时需要的数据结构)。单位:栈帧(可以理解为一个方法)。栈的深度表示一个栈中可以放多少栈帧(stack:先进后出,方法的压栈(图))

下图:


本地方法栈:native修饰的方法,这里没讲。


补充:指令区的包括程序计数器、虚拟机栈,本地方法栈,都是在一个线程中的,线程安全的。简单说就是每个线程都有自己的。



方法区:类信息、常量、静态变量、JIT(即时编译的一些代码。如动态代理即时生成的类信息)

堆:成员变量、对象实例(静态的变量会指向方法区内的地址,所以说静态变量是全类共享的)。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值