每天学一点:java虚拟机3

局部变量区被组织为一个以字长为单位,从0开始计数的数组。类型byte、short、char的值在存入数组前被转换为int值。
类型为long、double的值在数组中占据连续的两项。

静态方法被视为类方法,在其局部变量中不会隐含加入reference(引用)类型参数,此隐含类型参数表示调用该方法的对象本身。

byte、short、char、boolean在局部变量区都被转换成了int,即在帧栈中适当做int来进行处理的,只有当他被存回堆或方法区时,才会转换回原来的类型。

操作数栈
操作数栈被组织成以字长为单位的数组,不是通过索引访问,通过栈操作--压栈、出栈访问。操作数栈中存储数据方式通局部变量区。

帧数据区
java栈帧需要一些数据来支持常量池解析、正常方法返回、异常派发机制,这些信息都保存在java帧栈的帧数据区;
每当虚拟机要执行某个需要用到常量池数据的指令时,他都会通过帧数据区中指向常量池的指针来访问它。
常量池对类型、字段、方法的引用在开始时都是符号,虚拟机在常量池中搜索的时候,如果遇到指向类、接口、字段或者方法的入口,假若它们仍然是符号,虚拟机那时候才会(也必须)进行解析;

加入方法有返回值,虚拟机必须将它加入到发起调用的方法的操作数栈;

本地方法栈
线程调用本地方法栈不受虚拟机控制
本地方法通过本地方法接口访问虚拟机的运行时数据区,它和虚拟机拥有同样的权限
调用本地方法时,虚拟机保持java栈不变,只是简单的动态连接并直接调用指定的本地方法
如果本地方法接口需要毁掉java虚拟机中的java方法,该线程会保存本地方法栈的状态并进入发哦另一个java栈
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值