锁定老帖子 主题:深入理解JVM
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2010-09-03
最后修改:2010-09-03
另外,建议lz总结一下哪些特性会影响Java的跨平台一致特性,当然JNI太明显我们不提。我能想到的是strictfp关键字,还有没有其他了?
![]() ![]() ![]() |
|
返回顶楼 | |
发表时间:2010-09-03
楼主文章写的很不错,有两个问题需要和楼主探讨一下:
1)这个“方法代码”楼主意思是“Perm”区吗?目前的 JVM 已经提供了对 Perm 区的垃圾回收,简单来说就是把不用的类的元数据卸载(unload)。 2)JVM 为了良好的可移植性,并没有对 JVM 的通用寄存器做规定,所以“一个整数加到寄存器”这个说法感觉不太合适,JVM 指令的操作数全部都在栈上。 |
|
返回顶楼 | |
发表时间:2010-09-06
明显我还没到这个层次啊,
|
|
返回顶楼 | |
发表时间:2010-09-07
楼主太有心了!顶楼主
|
|
返回顶楼 | |
发表时间:2011-01-27
对学习有很大帮助
|
|
返回顶楼 | |
发表时间:2011-03-09
这个太好了,正是我要找的
|
|
返回顶楼 | |
发表时间: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. |
|
返回顶楼 | |
发表时间:2011-03-09
Now7! 写道 另外,建议lz总结一下哪些特性会影响Java的跨平台一致特性,当然JNI太明显我们不提。我能想到的是strictfp关键字,还有没有其他了?
![]() ![]() ![]() vm的跨平台一致性最完好的体现应该是JMM吧 |
|
返回顶楼 | |
发表时间:2011-03-09
endian也是一点吧?Java默认使用big-endian,所以Class文件里的数字也都是以big-endian顺序来保存的
|
|
返回顶楼 | |
发表时间:2011-03-10
lujiawu12 写道 拜读了,正在看 深入 JAVA虚拟机 。 蛮容易理解的
请问兄弟,你的是第二版(中文版)? |
|
返回顶楼 | |