2012-01-29 30 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