美文网首页
局部变量表里有什么

局部变量表里有什么

作者: 咪雅先森 | 来源:发表于2020-07-01 16:35 被阅读0次

Java中方法的局部变量是放在虚拟机栈的局部变量表里面,形参也算一个。
本地变量表,就是局部变量表,只是翻译不同。
栈帧以变量槽为最小单位。

快速认识

代码说明

public static void main(String[] args) {  
   byte[] waste = new byte[6 * 1024 * 1024];  
   int new_var = 0;  
   System.gc();  
}  

反编译得到:

public static void main(java.lang.String[]);  
   flags: ACC_PUBLIC, ACC_STATIC  
   Code:  
     stack=1, locals=3, args_size=1  
        0: ldc           #2                  // int 6291456  
        2: newarray       byte  
        4: astore_1  
        5: iconst_0  
        6: istore_2  
        7: invokestatic  #3                  // Method java/lang/System.gc:()V  
       10: return  

变量槽 Slot

局部变量表的容量以变量槽(Variable Slot)为最小单位,虚拟机中并没有明确指明一个Slot应占用的内存空间大小,只是很有导向性的说到每个Slot都应该能存放一个下面8种类型的其中一个。

  1. boolean
  2. byte
  3. char
  4. short
  5. int
  6. float
  7. reference
  8. returnAddress

不使用的对象,应当手动赋值为null
为了尽可能节省栈空间,局部变量表的Slot可以复用。
方法体中定义的变量,其作用域并不一定覆盖整个方法体,如果当前字节码PC计数器的值已经超出了某个变量的作用域,那这个变量对应的Slot就可以交给其他变量使用。

相关文章

  • 局部变量表里有什么

    Java中方法的局部变量是放在虚拟机栈的局部变量表里面,形参也算一个。本地变量表,就是局部变量表,只是翻译不同。栈...

  • 动态内存分配

    《c和指针》阅读笔记 前言:为什么要使用动态内存分配?函数的局部变量会进行回收,相比于函数的局部变量,有什么好处呢...

  • ThreadLocal到底是个啥?

    ThreadLocal是什么 提供线程局部变量,一个线程的局部变量在多个线程中有独立的副本,特点有:简单(开箱即用...

  • JavaScript 闭包、定时器

    什么是闭包? 有什么作用 因为js只存在局部变量和全局变量,函数内部可以访问外部变量,而外部却不能访问局部变量。闭...

  • C/C++知识点分享(16)

    1、statac全局变量、局部变量、函数与普通全局变量、局部变量、函数,static全局变量与普通的全局变量有什么...

  • 闭包和装饰器

    全局和局部变量 什么是局部变量 定义在函数内部或者作为函数的形参的变量就是局部变量. 使用注意事项 局部变量只能在...

  • 什么是闭包

    什么是闭包? 在上面的代码中,函数A有一个局部变量a,有一个函数B,B中可以访问函数A中的局部变量A,这就形成了一...

  • C高阶3:变量分类

    1. 本地变量/局部变量 1.1 本地变量/局部变量是什么? 在大括号内定义的变量就是本地变量/局部变量。 1.2...

  • Java随记: Java变量类型

    Java语言支持的变量类型有: 局部变量 成员变量 类变量 Java局部变量 局部变量声明在方法、构造方法或者语句...

  • 菜鸟Python笔记-基础篇06:函数(二)

    一、局部变量 <1>什么是局部变量 如下图所示: <2>小总结 局部变量,就是在函数内部定义的变量 其作用范围是这...

网友评论

      本文标题:局部变量表里有什么

      本文链接:https://www.haomeiwen.com/subject/bkncqktx.html