Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对于任务关键型工作负载,64位JVM是否与32位JVM一样好?_Java_Performance_Jvm_64 Bit_Stability - Fatal编程技术网

Java 对于任务关键型工作负载,64位JVM是否与32位JVM一样好?

Java 对于任务关键型工作负载,64位JVM是否与32位JVM一样好?,java,performance,jvm,64-bit,stability,Java,Performance,Jvm,64 Bit,Stability,我用不同的方式问了同一个问题,问题结束了: 这是我第二次尝试得到客观的答案 我们正在考虑将我们的产品迁移到64位Java,以满足那些在Solaris(SPARC)和Linux(RHEL 5.x)上突破32位服务器JVM界限的客户。我们的导演问:“几年前,64位还不太成熟,现在呢?” 对于那些没有突破4GB边界的客户,使用64位JVM会对性能产生负面影响吗?如果是,多少钱?我们创造了很多东西。(我们不想同时支持32位和64位JVM,最好是非此即彼) 对于那些突破4GB边界的人,我们能期望JVM像3

我用不同的方式问了同一个问题,问题结束了:
这是我第二次尝试得到客观的答案

我们正在考虑将我们的产品迁移到64位Java,以满足那些在Solaris(SPARC)和Linux(RHEL 5.x)上突破32位服务器JVM界限的客户。我们的导演问:“几年前,64位还不太成熟,现在呢?”

  • 对于那些没有突破4GB边界的客户,使用64位JVM会对性能产生负面影响吗?如果是,多少钱?我们创造了很多东西。(我们不想同时支持32位和64位JVM,最好是非此即彼)

  • 对于那些突破4GB边界的人,我们能期望JVM像32位JVM一样稳定吗

    • 性能是否会成为一个问题?如果是,多少钱?我们创造了很多东西
    • 什么是新的GC调优技术
    • 探查器:它们是否完全用于分析64位JVM应用程序

  • 更新:对于那些评论者和那些结束我之前问题的人,我相信我现在理解了你们的焦虑。同时,我相信你们中的一些人做出了一些(不真实的)假设,认为我很懒或者是一个毫无头绪的人。我会在调查后公布我的调查结果。感谢所有给我真正的指导的人。

    由于您几乎可以自己进行测试,我假设您期待关于使用32/64位JVM的体验的“真实”答案

    我是为银行创建金融应用程序团队的一员。我们在Windows上使用32位JVM进行开发,几乎所有的服务器应用程序都在运行64位JVM的RHEL上运行。性能对我们来说从来都不是问题,因为我们使用的是像样的机器(我们的常规服务器机器使用的是一个32核的AMD机箱,至少有32吉比特的RAM)

    正如预期的那样,由于指针大小的不同,堆的大小会增加,但由于现在限制从4GiB提高,所以这也不会困扰我们。我们的应用程序还创建了许多对象。我们可以使用VisualVM或命令行工具调试应用程序。关于GC设置,我们使用默认设置,并且仅当我们测量到实际上是GC造成了问题时才尝试更改。分配一个比应用程序使用的堆大得多的堆大小(8GiB)对我们来说是很常见的,您会看到一个大型GC每天扫描一次,这非常好

    我听说JDK 7有一个新的GC算法,名为,它更适合服务器应用程序,所以您应该完全尝试一下

    尽管如此,您最好的选择是尽可能多地进行测量(分别在32位和64位机器上使用32 v/s 64位),然后做出决定。仅供参考,我们的组织正在全面推进64位JVM,因为目前大多数库存服务器硬件都是64位的,而4GiB对于现代服务器应用程序(至少在我们的领域中)来说是相当严格的

    我们正在考虑将我们的产品迁移到64位java,以满足那些在Solaris(SPARC)和Linux(RHEL 5.x)上突破32位服务器JVM界限的客户。我们的导演问:“几年前,64位还不太成熟,现在呢?”

    Sun使用64位的时间比Windows长得多。Solaris 2.5(1995年,Windows 95发布的同一年)在64位上的可靠性不如它本可以的那么高。许多仍然使用SunOS(32位)的人没有意识到这一点,几乎没有机器有足够的内存。Solaris 2.6(1997)首次实现了向64位平台的重大迁移。直到1999年(在Solaris上)我才开始认真使用Java,那时我已经在脑海中建立了64位的概念

    1) 对于那些没有突破4GB边界的客户,使用64位JVM会对性能产生负面影响吗?如果是,多少钱

    64位JVM有两倍大小和两倍数量的寄存器。如果您经常使用
    long
    ,您可以看到一个显著的改进,但是对于典型的应用程序,两种方式的差异都是5-10%

    我们创造了很多东西

    如果你没有意识到这是一个问题,那么IMHO的表现对你来说并不是什么大问题。使用任何探查器,都有两个报告CPU和内存使用情况。通常,检查内存配置文件会对性能产生更大的影响。(见下文)

    (我们最好不要同时支持32位和64位JVM,最好是非此即彼) 不能说有多大区别。你认为支持每个人的开销是多少。代码完全相同,从您的角度来看,它可能会稍微增加测试。它与支持两个版本的Java6没有太大区别

    2) 对于那些突破4GB边界的人,我们能期望JVM像32位一样稳定吗

    自从1999年开始使用64位版本后,我不记得有哪一次使用32位会让事情变得更好(只是因为内存有限而更糟)

    性能是否会成为一个问题?如果是,多少钱?我们创造了很多东西

    如果性能是一个问题,丢弃较少的对象

    什么是新的GC调优技术

    您可以将最大内存大小设置得更高。就这样。只要低于32GB,内存使用率就不会明显增加,因为它使用32位引用

    我要做的一件事是为一个新的应用程序将Eden大小设置为8GB,如果不需要的话,可以减少它。这可以大大减少GC时间。(低至每天一次;)这不是32位JVM的选项

    探查器:它们是否完全用于分析64位JVM应用程序

    VisualVM是纯Java,AFAIK的工作原理完全相同。YourKit使用本机库,可能需要确保您使用的是正确的版本(它通常会为您设置此版本,但如果您的环境混乱,您可能需要知道有两个版本的