天天看點

Java 性能優化的 9 個工具,你知道幾個?

之前我寫過一篇關于5個工具幫助寫出更好的Java代碼的文章。合适的工具可以改進我們的代碼,并且提高開發效率。在IDR解決方案中,我們一直在找一些方法來改進我們的代碼。

但最近,我們在考慮改進PDF HTML5轉換器和Java PDF類庫代碼時,發現最近我們的關注點已經開始轉換到如何提升Java性能。

在這篇文章中,我會帶着大家一起看一下9個可以幫助我們優化Java性能的工具。有一些我們已經在IDR Solutions中使用了,而另外一些有可能在個人項目中使用。

1、NetBeans Profiler

Java 性能優化的 9 個工具,你知道幾個?

NetBeans profiler是一個NetBeans IDE插件,主要為NetBeans IDE提供性能分析相關的功。NetBeans IDE是一個開源的內建開發環境。它很好地支援所有Java應用類型(包括Java SE、JavaFX、Java ME、Web、EJB和移動應用)的開發。

這個性能分析器包含了諸如CPU、記憶體和線程性能分析功能,并且提供了一些用于基本JVM監控的附加工具和功能。對于需要解決記憶體和性能相關問題的開發者非常有用。

2、JProfiler

Java 性能優化的 9 個工具,你知道幾個?

JProfiler 在我之前的文章中有提及。同樣,它也是一個很好的Java性能分析工具。JProfiler集CPU、記憶體和線程性能分析于一體,可以用于分析性能瓶頸、記憶體洩漏、CPU負載和解決線程相關的問題,并且支援本地性能分析(分析與JProfiler軟體安裝在同一台機的應用)和遠端性能分析(它可以分析遠端沒有安裝JProfiler機器上的應用),這一點對開發人員非常有用。

JProfiler由ej-technologies GmbH開發的商業授權的Java性能分析工具,主要為Java EE和Java SE應用所設計。

3、GC Viewer

Java 性能優化的 9 個工具,你知道幾個?

GC viewer截圖

GC Viewer可以(從首頁和Github)免費擷取。GC Viewer是一個開源工具,可以對vmflags -verboase:gc和-Xloggc:等Java VM選項産生的資料進行可視化分析。GC Viewer可以用于計算GC(垃圾回收)相關的性能資料記錄,包括吞吐、累積暫停、最長時間的暫停等等。當你想要通過改變生成大小和設定初始堆大小來調整某個特定應用的GC時,它尤其有用。

GC Viewer是一個開源工具,由Tagtraum Industries Incorporated開發。這是一個很小的初創軟體咨詢公司,位于羅利、北卡羅萊納州,由成立于1999年的非盈利項目Tagtraum Industries在2004年創立。

4、VisualVM

Java 性能優化的 9 個工具,你知道幾個?

VisualVM 是一個由NetBeans平台派生的工具,遵循子產品化的架構思想。這意味着可以通過插件友善的進行擴充。

Visual VM允許你擷取Java程式的詳細資訊,隻要它在一個Java虛拟機(JVM)上運作即可。生成的資料可以由JDK工具生成和讀取,多個Java程式的所有資料和資訊都可以很友善地進行檢視,包括本地和遠端的運作程式。同時可以儲存JVM軟體的資料快照,把資料儲存在本地,友善以後進行檢視或者和其他人一起分享。

Visual VM可以進行CPU性能分析、記憶體性能分析,進行GC(譯者注:可以進行強制調用GC)、儲存快照等。

5、Patty Beta

Java 性能優化的 9 個工具,你知道幾個?

“Patty” 項目 是一個開源項目,可以從Source Forge下載下傳。它緻力于為Java 1.5.0和更高版本的虛拟機提供性能分析工具。與其他性能分析工具不同之處在于,它專注性能分析,并且允許使用者在運作時開啟和關閉性能分析功能。

目前Patty正處于beta版階段,但随着更多強大的功能如方法執行、代碼覆寫、線程競争(Thread Contention)分析的加入,Patty可以用于(記憶體、CPU等)性能調優,并且可以将資訊通過TCP/IP Socket發送到其他電腦上。Patty有着易用的GUI,可以用于分析堆。還可以在Java編譯流程中的準備階段,對應用程式運作時對class進行監測(instrument)和取消監測(de-instrument)。

6、JRockit——任務管理

Java 性能優化的 9 個工具,你知道幾個?

JRockit 是一個原由Appeal Virtual Machines開發的專有Java虛拟機。2002年由BEA Systems收購,之後從Sum Microsystems處轉到Oracle。

Oracle的JRockit是一套完整的Java SE解決方案,包含了一個高性能JVM、性能分析、監控和排錯工具。可用于預測Java程式中的延遲。

現在,JRockit打包有一系列的稱為JRockit任務控制(JRockit Mission Control)的工具。這些工具包括:一個用于管理的控制台(console,譯者注:此console跟終端不一樣,是特指管理背景系統),進行GC資料可視化和其他的一些性能統計。它同樣可以作為運作時性能分析工具Runtime Analyzer來使用,也可以分析記憶體問題。

7、Eclipse Memory Analyzer

Java 性能優化的 9 個工具,你知道幾個?

Memory Analyzer (MAT) 可以在Eclipse IDE中找到

Eclipse記憶體分析器(Eclipse Memory Analyzer)是一個可以幫助你找到記憶體洩漏和減少記憶體損耗的Java堆分析器。它更适合作為一個分析Java堆棧和計算大小的工具集,也可以用于監測記憶體洩漏和反模式帶來的記憶體損耗。

8、Java Interactive Profiler

Java 性能優化的 9 個工具,你知道幾個?

JIP是一個用Java開發的高性能、低損耗性能分析器。基于BSD許可協定釋出,可以從Source Forge下載下傳。使用JIP的開發者可以在VM運作時開啟和關閉性能分析,并且可以過濾類和包、控制輸出。

9、Profiler4J

Java 性能優化的 9 個工具,你知道幾個?

Profiler4j 是一個專注于CPU性能分析的工具。它具有友好的使用者界面,支援遠端性能分析,并且支援動态修改配置。

Profiler4j值得關注的特性有:基于動态位元組碼增強方式,這就表明它不需要任何本地的庫和外部可執行檔案支援。

更重要的是,它完全由Java編寫,可以提供圖形化的調用圖形資訊、調用樹結構、記憶體監控和類清單,支援細粒度配置檔案。它基于Apache License v2.0協定釋出,可以從Source Forge上下載下傳。