2010-09-23 79 views
11

我有一個CPU密集型多線程Java應用程序,我正在尋找在運行時測量其性能的方法(對自動化有用)。我試了幾個選項如何測量Java應用程序的性能?

System.currentTimeMillis(); 
System.nanoTime(); 
ThreadMXBean.getThreadCPUTime(); 

前兩項措施是實時的。最後一次測量只有一個線程的CPU時間。我想測量進程產生的所有線程的CPU時間。

在復活舊機器並將其專用於此任務之前,我想看看現在有什麼選項。

我運行Linux和平臺相關的解決方案是可以接受的,但最不可取的。

+2

請參閱「Java理論與實踐:動態編譯和性能度量」,網址爲http://www.ibm.com/developerworks/java/library/j-jtp12214/。這是一個評論,而不是答案:-) – Istao 2010-09-23 09:53:48

+0

看看這個插件的來源 - JTop:http://blogs.oracle.com/alanb/entry/two_fine_demos – 2010-09-27 10:31:04

回答

11

嘗試perf4j:http://perf4j.codehaus.org/ 我建議與AOP一起使用它,但它不是必須的。有關AOP的更多詳細信息,請參閱http://perf4j.codehaus.org/devguide.html#Using_Spring_AOP_to_Integrate_Timing_Aspects

+0

我很確定perf4j措施的實時,而不是CPU時間。儘管我喜歡這些圖表。 – Alexandru 2010-09-23 09:49:05

+0

@Alexandru我相信這是要求。至少這是我從這個問題所瞭解到的...... – 2010-09-23 10:03:27

+0

你說得對,我還不夠清楚。實時問題是如果我瀏覽LOL @Alexandru的StackOverflow – Alexandru 2010-09-23 10:52:58

2

嘗試使用Dtrace啓用JVM。 它有很多的性能探測器,可以幫助你得到你想要的東西。

+0

Dtrace是否僅在Solaris下才可用? – Alexandru 2010-09-23 09:58:16

+0

Dtrace可用於openSolaris以及Freebsd.One可以完成的任務是在任一操作系統上獲取Java應用程序,以執行性能測試並獲取數字。 – gaurav 2010-09-23 10:08:38

+0

Dtrace在Mac OS X上也可用。但在Mac OS X JVM中啓用的Dtrace探測器可能與爲Solaris啓用的Dtrace探測器不同。 – mattbh 2010-10-20 22:52:16