2012-01-29 91 views
0

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

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

我对MacBook Pro的运行甲骨文的Java 2011年

 
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) 

以下是我的VM设置

 
-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 

欣赏它,如果任何人可以阐明这一点。

请让我们知道你发现了什么:

+0

难道这是在所有涉及到那些饥饿的CPU周期,你的电脑上的任何其他进程? – 2012-01-29 03:33:55

+0

感谢Eric的建议。这是一个应用程序问题。 – 2012-01-29 05:52:49

回答

2

根据您告诉我们的情况很难说出什么问题。

  • 这可能是在你的应用程序中的问题本身

  • 这可能是您启动应用程序时的一个问题。

  • 这可能是您测量“响应时间”的方式中的问题。


如果你想有一个更好的答案,你需要解释如何你“在Eclipse靛蓝执行Java程序10000次”。

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

另外:

  • 当你说没有网络I/O,不包括127.0.0.x和当地的IPC?
  • 什么是应用程序实际上在做什么?它是以某种形式或形式与别的东西说话吗?
+0

谢谢斯蒂芬。你提供的第一个提示解决了这个问题。这是一个应用程序问题。我正在修改一个我没有注意到的列表。 – 2012-01-29 05:48:25

1

可以通过简单地剖析应用程序就可以揭示...: )

+0

我异形的JProbe使用的应用程序,并没有发现什么。该程序是执行10,000次的单线程应用程序。与并发有关的问题不应该导致问题。我已在http://goo.gl/FTvng上发布了GC性能详细信息。 – 2012-01-29 03:31:14

+0

有几件事情“剖析”能为你做。其中之一是确定“热点”:哪些模块最常被调用?哪些模块耗时最长?这些模块使用哪些数据结构?分享? – paulsm4 2012-01-29 18:01:32

相关问题