java 32位兼容_Java 32位与64位兼容性

问题

Java代码是否可以在32位JDK中构建和编译成32位字节代码,在64位JVM中工作?或者64位JVM是否需要64位字节代码?

为了提供更多细节,我的代码在运行32位JVM的Solaris环境中工作,但现在我在将JDK和Weblogic Server升级到64位后遇到问题。

#1 热门回答(91 赞)

是的,Java字节码(和源代码)是独立于平台的,假设你使用独立于平台的库。 32对64位应该无关紧要。

#2 热门回答(20 赞)

我不小心在64位VM而不是32位VM上运行我们的(大型)应用程序,直到一些外部库(由JNI调用)开始失败才发现。

在32位平台上序列化的数据在64位平台上读取,完全没有问题。

你得到什么样的问题?做一些事情而不是其他事情吗?你是否尝试过附加JConsole等并且有一个高峰?

如果你有一个非常大的VM,你可能会发现64位的GC问题可能会影响你。

#3 热门回答(11 赞)

第一个问题是,第二个问题不是;它是一个虚拟机。你的问题可能与版本之间的库实现中未指定的更改有关。虽然可能是比赛条件。

VM必须经历一些箍。值得注意的是,引用在类文件中被处理,就好像它们在堆栈上占用ints的空间相同.double和long占用了两个引用槽。例如字段,VM通常会进行一些重新排列。这一切都是(相对)透明地完成的。

一些64位JVM也使用"压缩oops"。因为数据大约每8或16个字节对齐,所以地址的3或4位是无用的(尽管某些算法可能会窃取"标记"位)。这允许32位地址数据(因此使用一半的带宽,因此更快)在64位平台上使用35或36位的堆大小。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值