2009-12-04 23 views
1

我剛剛進入Java分析,我想問一下。分析Java EE1.5或SE1.6

在服務器上配置應用程序是否有意義,我只有控制檯?

是否有任何控制檯分析器是有意義的?

或者我應該只在本地主機上分析應用程序?

回答

2

當你進行分析時,你應該儘可能地儘可能地重現生產環境。硬件(核心,內存等)和軟件(操作系統,JVM版本)的差異可以使分析結果與運行時環境一樣獨特。

例如,根據CPU的差異,看起來像是本地計算機上優化的CPU瓶頸可能會完全消失,或者變成生產服務器上的磁盤瓶頸。

所有現代分析器都可以連接到遠程運行的JVM,因此您不必擔心只能訪問控制檯。

您決定使用哪種分析器取決於您的需求和偏好。某些分析器會向您顯示您的代碼大部分時間花費在何處的「熱點」,這些通常是優化的候選對象。

我傾向於使用JProfiler,因爲它具有廣泛的功能和良好的性能。我以前使用YourKit,但切換到JProfiler的內存和線程分析功能。

5

VisualVM能夠連接到遠程主機。分析的工作方式與本地相同。這是JDK的一部分,因爲JDK 6更新7

+0

據我所知它只監視遠程應用程序,但不會對它們進行配置。 – pondermatic 2010-02-01 02:17:23

1

是否有意義剖析服務器,在那裏我 只有在控制檯上 應用程序?

幸運的是,這也不要緊,因爲Java有總是(當然,很長一段時間,反正)支持的遠程分析,即探查器不是被異形JVM在不同的機器上運行,並通過獲取其數據網絡。

我見過的所有Java分析器都支持這個功能,包括最近JDK(在bin目錄下)附帶的visualvm。

0

請注意,JDK帶有一個內置分析器HPROF。 HPROF有點簡單,但會發現很多問題。它僅通過使用參數-agentlib:hprof調用JVM來激活;只要您的JVM正在運行,它就會自動運行。它收集數據直到JVM終止,然後將其轉儲到服務器上的文件中,您可以分析該文件。

參見例如http://java.sun.com/developer/technicalArticles/Programming/HPROF.html有一個很好的介紹。用於HPROF結果的一個很好的圖形分析器是PerfAnal:http://java.sun.com/developer/technicalArticles/Programming/perfanal/