Java - 为什么一段时间内响应时间会增加?

时间:2012-01-29 03:14:43

标签: java performance optimization garbage-collection jvm

我在Eclipse indigo中执行了10,000次Java程序。所有执行的操作都在内存中;没有磁盘IO或网络IO。我注意到,对于相同的输入,在一段时间内响应时间从2毫秒增加到25毫秒。在绘制响应时间时,图形看起来是线性的。首先想到的是我没有调整垃圾收集器。我已设置垃圾收集器以获得最大吞吐量并减少gc暂停时间。仍然没有区别。

有关响应时间和Java VM GC的屏幕截图,please click the link

我在Macbook Pro 2011上运行Oracle Java。

java version "1.6.0_29"
Java(TM) SE Runtime Environment (build 1.6.0_29-b11-402-11M3527)
Java HotSpot(TM) 64-Bit Server VM (build 20.4-b02-402, mixed mode)

以下是我的虚拟机设置

-server -XX:+UseParallelGC -XX:+UseParallelOldGC -Xms48m -Xmx64m -XX:NewSize=32m -XX:MaxNewSize=32m -Xss2048k -XX:SurvivorRatio=16 -XX:MaxGCPauseMillis=15 -verbose:gc -Xloggc:gclog.txt -XX:+PrintGCDetails

欣赏它,如果有人能够阐明这一点。

2 个答案:

答案 0 :(得分:2)

根据您告诉我们的内容,很难说出问题所在。

  • 您的应用本身可能会出现问题。

  • 启动应用程序时可能会出现问题。

  • 测量“响应时间”的方式可能会出现问题。


如果您想要更好的答案,您需要解释 你是如何“在Eclipse indigo中执行10,000次Java程序”。

  • 如何/在何处测量响应时间?通过Eclipse?通过别的什么?
  • 这是否真的意味着您运行Eclipse启动器10,000次?
  • 或者您正在运行启动应用程序的基准测试框架类?
  • 或者它只是调用应用程序的main 10,000次?
  • Eclipse是在单独的JVM中还是在Eclipse JVM中运行测试?

此外:

  • 当您说没有网络I / O时,是否包含127.0.0.x和本地IPC?
  • 申请实际上在做什么?它是以某种形式或形式与其他东西交谈吗?

答案 1 :(得分:1)