锁定老帖子 主题:java指令详解
精华帖 (3) :: 良好帖 (4) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-10-09
yunzhiyifeng 写道 public void getValue(int j) { int i=j; System.out.println(i); } 这段方法里面不是应该有this, i, j三个本地本量么,而stack是2,那哪个没有入栈? 请参考这帖的图吧:虚拟机随谈(一):解释器,树遍历解释器,基于栈与基于寄存器,大杂烩 JVM里每个Java线程都有一个Java方法调用栈,以栈帧为单位;每个栈帧里又有一个操作数栈、局部变量区还有其它一些数据。方法的参数和局部变量是放在这个局部变量区里的,操作数栈则是在表达式求值过程中用来存临时参数、结果的地方。javap看到的stack值就是操作数栈的最大高度,跟局部变量的个数没关系。 |
|
返回顶楼 | |
发表时间:2010-10-10
stack明白了,多谢楼上的兄弟,明白了stack在那里的意思就很容易理解了
|
|
返回顶楼 | |
发表时间:2010-10-10
只是就是不断的积累
|
|
返回顶楼 | |
发表时间:2011-02-27
引用 void V
int char byte short long float double 都是类型第一个字母(大写) boolean 比较特别,用J表示 ,因为B被byte给占用了 boolean用Z,long用J,array用[(JVMS2_4.3.2) |
|
返回顶楼 | |
发表时间:2011-02-27
william_ai 写道 引用 void V
int char byte short long float double 都是类型第一个字母(大写) boolean 比较特别,用J表示 ,因为B被byte给占用了 boolean用Z,long用J,array用[(JVMS2_4.3.2) boolean是用Z,我记错了,long 怎么会是J呢? |
|
返回顶楼 | |
发表时间:2011-02-27
L被class instance占用了
|
|
返回顶楼 | |