论坛首页 Java企业应用论坛

深入理解JVM

浏览 59563 次
锁定老帖子 主题:深入理解JVM
该帖已经被评为精华帖
作者 正文
   发表时间:2010-09-02  
膜拜
     还有吗?
0 请登录后投票
   发表时间:2010-09-02  
图文并茂,直接清晰,概括的很好。

学习...
0 请登录后投票
   发表时间:2010-09-02   最后修改:2010-09-02
引用

大大,小的觉着怪的是操作数栈明明只能通过load/store/push/pop/ldc/dup/swap指令来操作,操作的单元也是entry而不是slot,但“深度”却还是要把double和long计算为2,多别扭


拿个实际例子来说吧:

int i = 10;
long l = 10L;

0 bipush 10  # < 10 >
2 istore_1   # < >
3 ldc2_w <Long 10> # < 10Low, 10High >
6 lstore_2   # < >

你看第3条指令,ldc之后,10L占2个槽位(到底是0在第一个槽位还是第2个槽位,其实你自己定都可以),因为这个Long有8个字节,而一个槽位(也就是一个Entry)只有4个字节,当然深度为2罗。

即使 boolean, byte, short, char等类型只需要1bit, 1byte, 2byte, 2byte,但在操作栈及local中,都是以4个字节来占位的。

不过,Object Reference,按照现有的虚拟机规范,是只占一个槽位的,但我估计,在64b的JVM中,实际上是占用2个槽位,除非你启动了 compressed oop选项。
0 请登录后投票
   发表时间:2010-09-02  
看得不是十分的懂,刚接触Java不久···
0 请登录后投票
   发表时间:2010-09-02  
《深入java虚拟机》一直想看,一直却静不下心来看!
0 请登录后投票
   发表时间:2010-09-03  
有一本书叫《深入Java虚拟机》 这篇文章讲的内容,在那本书里面都有相应的内容,而且讲的更加详细。建议楼主看看,
0 请登录后投票
   发表时间:2010-09-03  
NSCoffee 写道
有一本书叫《深入Java虚拟机》 这篇文章讲的内容,在那本书里面都有相应的内容,而且讲的更加详细。建议楼主看看,

的确,是不错,建议大家都看看!
0 请登录后投票
   发表时间:2010-09-03  
更一步了解了JVM,顶一个.
0 请登录后投票
   发表时间:2010-09-03  
漂亮,图文并茂,内容也不错。
0 请登录后投票
   发表时间:2010-09-03  
引用

不过,Object Reference,按照现有的虚拟机规范,是只占一个槽位的,但我估计,在64b的JVM中,实际上是占用2个槽位,除非你启动了 compressed oop选项。


我记得JVM规范说Object reference的长度必须被一个JVM word(即槽位)存储,而double/long是两个word。但是JVM word的长度不一定非得是32b,可以是64b。所以,无论是不是64b的JVM,引用类型应该都是1个槽位。
0 请登录后投票
论坛首页 Java企业应用版

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