该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2010-11-05
感谢楼主的总结奉献
|
|
返回顶楼 | |
发表时间:2010-11-05
其中long和double会占用2个本地变量空间(32bit),其余占用1个。
这句话什么意思? |
|
返回顶楼 | |
发表时间:2010-11-05
很不错,讲得很好。
|
|
返回顶楼 | |
发表时间:2010-11-05
vtudiv 写道 其中long和double会占用2个本地变量空间(32bit),其余占用1个。
这句话什么意思? 根据VM Spec的规定,超过32位大小的数据,VM是把他们当做2个32位数据代替,每次get/set其实都执行了2次操作,而小于等于32位的数据类型,只需要执行1次。因此小于等于32位的类型访问是原子操作,而long和double的访问是非原子操作,这个在并发程序中需要注意,可以通过volatile关键字来保证原子性。 上述描述对32位虚拟机有效,64位未做过研究,不评论。 |
|
返回顶楼 | |
发表时间:2010-11-05
IcyFenix 写道
与程序计数器一样,VM栈的生命周期也是与线程相同。VM栈描述的是Java方法调用的内存模型:每个方法被执行的时候,都会同时创建一个帧(Frame)用于存储本地变量表、操作栈、动态链接、方法出入口等信息。每一个方法的调用至完成,就意味着一个帧在VM栈中的入栈至出栈的过程。在后文中,我们将着重讨论VM栈中本地变量表部分。
本地变量表 一般的叫法是 局部变量表 吧?
是翻译还是原著,表达方式怎么这么奇怪。
|
|
返回顶楼 | |
发表时间:2010-11-05
楼主讲的不错!!
有这个图就更好了,方便大家看
jvm的内存结构 |
|
返回顶楼 | |
发表时间:2010-11-05
sswh 写道
本地变量表 一般的叫法是 局部变量表 吧?
是翻译还是原著,表达方式怎么这么奇怪。
Local Variables
这个中文有什么很权威的翻译吗?日后我注意一下,谢谢。 |
|
返回顶楼 | |
发表时间:2010-11-06
IcyFenix 写道 vtudiv 写道 其中long和double会占用2个本地变量空间(32bit),其余占用1个。
这句话什么意思? 根据VM Spec的规定,超过32位大小的数据,VM是把他们当做2个32位数据代替,每次get/set其实都执行了2次操作,而小于等于32位的数据类型,只需要执行1次。因此小于等于32位的类型访问是原子操作,而long和double的访问是非原子操作,这个在并发程序中需要注意,可以通过volatile关键字来保证原子性。 上述描述对32位虚拟机有效,64位未做过研究,不评论。 曾经仔细读过虚拟机规范,没注意这个细节,可能是好久没看忘了 |
|
返回顶楼 | |
发表时间:2010-11-06
IcyFenix 写道
sswh 写道
本地变量表 一般的叫法是 局部变量表 吧?
是翻译还是原著,表达方式怎么这么奇怪。
Local Variables
这个中文有什么很权威的翻译吗?日后我注意一下,谢谢。
在国内确实很少看到有翻译成本地变量表的,不过明白意思就行了,管它叫阿猫阿狗 |
|
返回顶楼 | |
发表时间:2010-11-07
最后修改:2010-11-07
IcyFenix 写道
sswh 写道
本地变量表 一般的叫法是 局部变量表 吧?
是翻译还是原著,表达方式怎么这么奇怪。
Local Variables
这个中文有什么很权威的翻译吗?日后我注意一下,谢谢。 Local Variables 翻译为 局部变量 native 翻译为 本地 标量类型? 英文是什么?我们一般叫基本类型吧?
|
|
返回顶楼 | |