zoukankan      html  css  js  c++  java
  • 关于slot理解

    • 参数值的存放总是在局部变量数组的index0开始的,到数组长度-1的索引结束。
    • 局部变量表最基本存储单元是slot(变量槽),它存放编译期间可知的各种基本数据类型(8种)、引用类型(reference)、returnAddress类型。
    • 在局部变量表里,32位以内的类型只占用1slot(包括returnAddress类型)、64位类型(longdouble)占用2slot
    • Byteshortchar在存储前被转换为intboolean也被转换为int0表示false,非0表示truelongdouble则占据2slot
    • JVM会为局部变量表中的每一个slot都分配一个访问索引,通过这个索引即可成功访问到局部变量表中指定的局部变量值。
    • 当一个实例方法被调用的时候,它的方法参数和方法体内部定义局部变量将会按照顺序被复制到局部变量表中的每一个slot上。
    • 如果需要访问局部变量中的一个64bit的局部变量值时,只需要使用前一个索引即可。
    • 如果当前帧是由构造方法或者实例方法创建的,那么该对象引用this将会存放在index0slot处,其余参数按照参数表顺序继续排列。因为this变量不存在与当前局部变量表中的。

    Slot的重复利用:

    • 栈帧中的局部变量表中的槽位是可以重用的,如果一个局部变量超过了其作用域,那么在其作用域之后申请的新的局部变量就有可能会复用过期局部变量的槽位,从而达到节省资源目的。
    欢迎批评指正,提出问题,谢谢!
  • 相关阅读:
    Max Sum of Max-K-sub-sequence(单调队列)
    Matrix Swapping II(求矩阵最大面积,dp)
    重温世界杯(贪心)
    Pie(求最小身高差,dp)
    Matrix(多线程dp)
    Python 实现自动导入缺失的库
    分布式系统session一致性解决方案
    数据结构 【链表】
    【数字图像处理】gamma变换
    【数字图像处理】顶帽变换和底帽变换
  • 原文地址:https://www.cnblogs.com/xxeleanor/p/13615045.html
Copyright © 2011-2022 走看看