jvm Local Variables ,Operand Stacks

an object = an instance of a class = new  类()

 reference = 连接到一个对象。

一、我们源码的方法需要保存的数据:

      1、类方法(static)或是对象方法,

           如果是对象方法要保存 this 的reference:表示当前哪个对象的方法。

          因为对象方法里:可能用到对象的一些数据。

      2、方法参数

      3、程序里的变量

      4、程序里的 literal  value:

      5、编译时常量

      6、计算结果      

因此:方法数据保存在哪里,这一块由Java stacks负责。

二、 Java stacks

        1、构成:多个stack frame

        2、stack frame:就是源码里一个方法数据所需要的空间

三、执行过程     

    一个线程调用一个方法-----jvm    在java stacks上分配一个新的stack frame 去保存数据。

四、stack frame 构成

      1、the local variables section 本地变量区:存放所有的数据,literal 值,变量,编译时常量,计算结果,参数。

           1》a method parameters(方法所有参数):

           2》local variables(本地变量):

      2、operand stack:用push,pop 操作数据。

          operand stack:只是一个临时的计算过程,要用到Local variable table里面的值,然后得出结果,放入到 local variables 区。

      3、frame data::

      


    


五、类方法例子:


public static void runClassMethod(int i,long l,float f,double d,Object b,byte x)
{
 for(int i1=0;i1<10;i1++)
System.out.println(i1);
 String s="a";//literal 字符
 String s1="a"+"b";//编译时常量 
System.out.println(s+s1);
}

  JVM:   Local variable table:参数6个+一个i1自变量+1个literal 字符串=8个变量。
        [pc: 0, pc: 59] local: i index: 0 type: int
        [pc: 0, pc: 59] local: l index: 1 type: long
        [pc: 0, pc: 59] local: f index: 3 type: float
        [pc: 0, pc: 59] local: d index: 4 type: double
        [pc: 0, pc: 59] local: b index: 6 type: java.lang.Object
        [pc: 0, pc: 59] local: x index: 7 type: byte
        [pc: 3, pc: 24] local: i1 index: 8 type: int
        [pc: 28, pc: 59] local: s index: 8 type: java.lang.String
        [pc: 32, pc: 59] local: s1 index: 9 type: java.lang.String


   文章:    jvm 说明书(The Java® Virtual Machine Specification Java SE 7 Edition):

       http://docs.oracle.com/javase/specs/jvms/se7/html/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值