论坛首页 Java企业应用论坛

JVM内存管理:深入Java内存区域与OOM

浏览 53981 次
该帖已经被评为精华帖
作者 正文
   发表时间:2010-11-05  
感谢楼主的总结奉献
0 请登录后投票
   发表时间:2010-11-05  
其中long和double会占用2个本地变量空间(32bit),其余占用1个。
这句话什么意思?
0 请登录后投票
   发表时间:2010-11-05  
很不错,讲得很好。
0 请登录后投票
   发表时间: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位未做过研究,不评论。
0 请登录后投票
   发表时间:2010-11-05  

IcyFenix 写道

与程序计数器一样,VM栈的生命周期也是与线程相同。VM栈描述的是Java方法调用的内存模型:每个方法被执行的时候,都会同时创建一个帧(Frame)用于存储本地变量表、操作栈、动态链接、方法出入口等信息。每一个方法的调用至完成,就意味着一个帧在VM栈中的入栈至出栈的过程。在后文中,我们将着重讨论VM栈中本地变量表部分。

 

     本地变量表   一般的叫法是  局部变量表 吧?

 

     是翻译还是原著,表达方式怎么这么奇怪。

 

0 请登录后投票
   发表时间:2010-11-05  

 

楼主讲的不错!!

 

有这个图就更好了,方便大家看

 

jvm的内存结构

jvm内存结构

0 请登录后投票
   发表时间:2010-11-05  
sswh 写道

 

     本地变量表   一般的叫法是  局部变量表 吧?

 

     是翻译还是原著,表达方式怎么这么奇怪。

 

 

Local Variables

 

这个中文有什么很权威的翻译吗?日后我注意一下,谢谢。

0 请登录后投票
   发表时间: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位未做过研究,不评论。



曾经仔细读过虚拟机规范,没注意这个细节,可能是好久没看忘了
0 请登录后投票
   发表时间:2010-11-06  
IcyFenix 写道
sswh 写道

 

     本地变量表   一般的叫法是  局部变量表 吧?

 

     是翻译还是原著,表达方式怎么这么奇怪。

 

 

Local Variables

 

这个中文有什么很权威的翻译吗?日后我注意一下,谢谢。

 

在国内确实很少看到有翻译成本地变量表的,不过明白意思就行了,管它叫阿猫阿狗

0 请登录后投票
   发表时间:2010-11-07   最后修改:2010-11-07
IcyFenix 写道
sswh 写道

 

     本地变量表   一般的叫法是  局部变量表 吧?

 

     是翻译还是原著,表达方式怎么这么奇怪。

 

 

Local Variables

 

这个中文有什么很权威的翻译吗?日后我注意一下,谢谢。

Local Variables   翻译为 局部变量

native 翻译为  本地

标量类型? 英文是什么?我们一般叫基本类型吧?

 

0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics