论坛首页 Java企业应用论坛

深入理解JVM

浏览 61135 次
锁定老帖子 主题:深入理解JVM
该帖已经被评为精华帖
作者 正文
   发表时间:2010-09-03   最后修改:2010-09-03
另外,建议lz总结一下哪些特性会影响Java的跨平台一致特性,当然JNI太明显我们不提。我能想到的是strictfp关键字,还有没有其他了?  
0 请登录后投票
   发表时间:2010-09-03  
楼主文章写的很不错,有两个问题需要和楼主探讨一下:
1)这个“方法代码”楼主意思是“Perm”区吗?目前的 JVM 已经提供了对 Perm 区的垃圾回收,简单来说就是把不用的类的元数据卸载(unload)。
2)JVM 为了良好的可移植性,并没有对 JVM 的通用寄存器做规定,所以“一个整数加到寄存器”这个说法感觉不太合适,JVM 指令的操作数全部都在栈上。
0 请登录后投票
   发表时间:2010-09-06  
明显我还没到这个层次啊,
0 请登录后投票
   发表时间:2010-09-07  
楼主太有心了!顶楼主
0 请登录后投票
   发表时间:2011-01-27  
对学习有很大帮助
0 请登录后投票
   发表时间:2011-03-09  
这个太好了,正是我要找的
0 请登录后投票
   发表时间:2011-03-09  
wangzaixiang 写道
引用

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


我记得JVM规范说Object reference的长度必须被一个JVM word(即槽位)存储,而double/long是两个word。但是JVM word的长度不一定非得是32b,可以是64b。所以,无论是不是64b的JVM,引用类型应该都是1个槽位。


local var slot在jvm spec中并没有说过是32bits的吧。它只是说明了boolean、byte……reference、returnAddress能扔进一个slot之中,而double和long需要2个。

reference的长度在jvm spec中并未规定,按实际情况来说,x64 vm中如果没有开oops压缩,那它应当占用64bit。

jvm spec 写道
A single local variable can hold a value of type boolean, byte, char, short, int, float, reference, or
returnAddress. A pair of local variables can hold a value of type long or double.
0 请登录后投票
   发表时间:2011-03-09  
Now7! 写道
另外,建议lz总结一下哪些特性会影响Java的跨平台一致特性,当然JNI太明显我们不提。我能想到的是strictfp关键字,还有没有其他了?  


vm的跨平台一致性最完好的体现应该是JMM吧
0 请登录后投票
   发表时间:2011-03-09  
endian也是一点吧?Java默认使用big-endian,所以Class文件里的数字也都是以big-endian顺序来保存的
0 请登录后投票
   发表时间:2011-03-10  
lujiawu12 写道
拜读了,正在看 深入 JAVA虚拟机 。 蛮容易理解的

请问兄弟,你的是第二版(中文版)?
0 请登录后投票
论坛首页 Java企业应用版

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