2010-04-07 55 views
1

我的Java应用程序的功能是提供参考数据(基本上从XML文件加载大量数据到哈希映射),因此我们要求从这样的数据hashmap基于一个id,我们有这样的多个有不同的业务数据集的地图。的问题是,当我试图执行用于相同的请求多次Java应用程序,响应时间是不同的像31毫秒,过48ms 72ms的,120毫秒,63毫秒等因此存在最小和采取最大时间之间的相当大的差距执行完成。理想情况下,我希望响应时间是63ms,65ms,61ms,70ms,61ms,但在我的情况下,对于相同请求的响应时间的变化是巨大的。我曾使用过一个opensource配置文件来了解是否有任何额外的方法执行或内存泄漏,但根据我的理解,这没有问题。请让我知道可能是什么原因,我该如何解决这个问题。响应时间是不同的多个执行的应用程序与相同的请求性能问题

回答

2

可能有多方面的原因:

  • 是您的Java应用程序重新启动,每次运行?如果不是,那可能是垃圾收集器在不幸的时间里踢了。如果是这样,JVM启动时间可能会导致变化。

  • 是其他任何机器上运行?

  • 磁盘缓存在某些情况下是“热身”的,但在其他情况下却不会?也就是说,是否最近访问过这些文件,以便它们仍在内存中?

  • 如果这是一个联网的应用程序,测量过程中是否有任何网络活动?

  • 如果涉及远程计算机(例如数据库服务器或文件服务器),那么上述方法是否也适用于该计算机?

使用一个分析器来找出哪一段代码负责时间的变化。

0

如果不运行实时系统,那么你就不能肯定这将在一定时间内执行。

操作系统不断地做其他的事情,大多是日常任务,并提供系统等服务。这很容易使您的系统其他部分减速50ms。

也有可能是你需要等待IO的时间。如硬盘或网络通信。

除此之外,还有一个事实,即您的JVM不做任何实时承诺。这可能意味着垃圾收集器贯穿始终。这对正常应用程序的影响非常小,但是如果您创建并忘记了很多对象(如加载大量或大型文件时可能会这样做),则效果会很大。

最后它可以是你的算法(你是否每次运行相同的数据?)如果你有不同的数据,你可以有不同的执行时间。

相关问题