2016-03-12 82 views
0

有一些文件操作应用程序需要处理大文件。我为此创建了一个jar文件。我测试了我的系统上的应用程序,它在3分钟内处理了1GB文件,但在同一个文件的不同系统上执行时相同的jar文件,耗时40分钟。我认为这可能是Java堆内存造成的,但是当我在系统上执行jar时具有相同的Java堆空间,它在不到5分钟的时间内再次执行。Java应用程序在一个系统上运行缓慢,但在另一个系统上运行速度非常快?

任何帮助将不胜感激。如果需要更多信息,请发表评论。

配置我的系统: 内存:8GB Java版本:7 VM -Xms128m -Xmx256m 操作系统:Windows 7

配置测试系统: RAM:6GB Java版本:7 VM - Xms128m -Xmx256m 操作系统:Windows 7

+0

不能期望在不同的机器上具有相同的速度。不同的CPU以不同的速率执行 –

+0

磁盘也可能存在差异。也许RAM的差异很重要。我们当然不知道你的设备的细节。 – chrylis

+0

感谢您对文斯的回应,但差异非常高,5分40分。 –

回答

1

我能想到的几个可能的解释:

  • 不同的文件系统。例如,如果测试系统将文件存储在网络共享上,并且文件服务器或网络缓慢/超载,则可能会读取缓慢。

  • 虚拟化。如果测试系统是虚拟机,并且在同一个虚拟机管理程序上的虚拟机之间存在很多I/O争用,则可能会看到缓慢的读取。

  • 内存争用。如果应用程序将文件映射到内存中,那么在存在物理RAM匮乏的系统上,与系统不同的情况相比,您可能会得到非常慢的I/O。 (要确定是否属于这种情况,您需要查看测试系统上还在发生什么。)

  • 测试系统中可能存在硬件故障。

很多这些东西都可以通过查看系统级性能统计来诊断。使用Java分析器(在两个系统上)也可以提供帮助。

+0

+1虚拟化提及。通常你所要求的内存不会被保留为物理内存,导致磁盘抖动和可怕的性能。 – kiwiron

+0

感谢给我一些方向斯蒂芬。检查后会回复给你。 –

0

我也有同样的问题,我觉得这是因为AV,只是把它关掉。我使用avast。希望能帮助到你 !

相关问题