【jvm我能讲两小时024】栈桢的局部变量表是如何定位变量的?是如何完成实参到形参传递的?
2023-09-27 14:29:28 时间
栈桢的局部变量表是如何定位变量的?是如何完成实参到形参传递的?
java虚拟机通过索引定位的方式来使用局部变量表。索引值从0开始,至局部变量表变量槽最大的数量。如果是访问的32位数据类型的变量,索引n就代表了第n个变量槽,如果是64位,则访问的是第n和n+1两个变量槽。对于64位的2个变量槽,不允许任何方式访问其中一个变量槽。如果出现这种情况,在类加载校验阶段会抛出异常。
当一个方法被调用时,java虚拟机会使用局部变量表来完成参数值到参数变量列表的传递过程,即实参到形参的传递。如果执行的是实例方法,那局部变量表的第0位索引的变量槽默认是用于传递方法所属对象实例的引用,在方法中可以通过this关键字来访问到这个隐含的参数。其余参数则按照顺序在变量槽中排列,参数表分配完后,在根据方法体内部定义的变量和作用域来分配其余的变量槽。
相关文章
- 从jvm来看,scala中的@究竟是个什么鬼?@模式匹配符号(scala 词法分析 语法分析常用)
- Spark On Yarn Cluster生产环境下JVM的OOM和Stack Overflow问题
- JVM栈上分配对象内存与逃逸分析原理分析(Escape Analysis)
- 热点推荐:为什么JVM需要GC
- 第六章 JVM垃圾收集器(2)
- 【JVM · 字节码】Class文件结构
- 线上一次简单的 JVM 调优,性能提升了15%
- jvm 性能调优工具之 jmap 命令详解
- 【JVM】JVM中的垃圾回收算法
- jvm之判断ygc耗时和频率
- 【JVM】命令行强制JVM执行垃圾回收
- 6 款 Java 8 自带工具,轻松分析定位 JVM 问题!
- IDEA spark 中scala的编译版本问题解决NoSuchMethodError (jvm )
- JVM常量池及字符串==比较分析
- JVM参数详细说明
- JVM致命错误日志(hs_err_pid.log)分析
- 【jvm我能讲两小时037】对象是如何被线程访问定位的?