java与64位的系统不兼容_64位JVM带来的问题及解决方案(转)

从32位JVM升级到64位可能会导致性能下降,主要原因是本地指针占用内存增加。这引发更频繁的GC,延长暂停时间和线程锁竞争。解决方案包括调整JVM参数,启用指针压缩,进行性能测试和逐步升级策略。
摘要由CSDN通过智能技术生成

这篇文章会检验你有关JVM的知识以及项目交付相关的技能;尤其是涉及到JVM升级的时候。期待你们的评论及回复,一起探讨下如何规避这类的项目可能产生的性能问题。

背景

最近碰到了一个影响到线上生产环境的问题,我们使用的是WebLogic 10以及32位的Hotspot JVM 1.6 。鉴于目前的一些问题以及未来负载上升的预测,我们决定将HotSpot JVM 1.6升级成64位的。

注意我们并没有修改JVM的启动参数。

经过几周的功能测试及规划,这次升级成功地部署到了线上环境。不过,技术支持团队发现第二天便出现了严重的性能下降,其中还有线程锁竞争的问题,迫使部署团队不得不回滚了这次升级。

最终我们找到了问题的原因,而这次升级也将在最近重新进行发布。

问题:

从上面这些信息来看,说一下你认为可能导致这次性能下降的原因。

说一下这次升级有什么好处,对于这类升级的如何进行管理以及降低风险,给出一些你的建议。

答案:

我经常听到有人说只要从32位JVM升级到64位就能自动获得性能的提升。这只说对了部分。有显著的性能提升的前提是在这之前你的系统存在内存占用的问题比如过度GC或者java.lang.outofmemoryerror,并且你也进行了适当的调优及堆大小的调整。

不幸的是,我们通常都忽略了一个事实,对于 64位的JVM来说,系统中的本地指针会占用8个字节,而不是4个。这会导致你的程序的内存占用量的增加,因此会带来更频繁的GC以及性能的下降。

下面是Oracle的官方解释:

64位的虚拟机和32位的比起来,性能上有什么不同?

一般来说,和3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值