使用Java VisualVM配置Java應用程序/分析CPU或內存的使用情況(轉)


以下內容翻譯自(機翻):https://baptiste-wicht.com/posts/2010/07/profile-applications-java-visualvm.html

當您需要發現應用程序的哪些部分消耗更多的CPU或內存時,必須使用分析器來執行此操作。

默認使用Sun JDK打包的一個分析器是Java VisualVM。這個分析器真的很簡單的使用,真的很強大。

在這篇文章中,我們將看到如何安裝它並使用它來配置應用程序。

通常,要安裝它,您無所事事,因為它與JDK一起安裝。但是在幾個Unix系統中,像Ubuntu一樣,情況並非如此。如果你想安裝它,只需使用apt-get(或aptitude):

sudo apt-get install visualvm

要啟動它,只需啟動jvisualvm(jvisualvm.exe在jdk for Windows的bin目錄中)。

這將打開以下窗口:

在這里看不到很多有趣的事情。要配置一個應用程序,您只需啟動它,VisualVM會將其檢測為已啟動:

之后,您只需雙擊即可查看有關正在運行的應用程序的信息。您有四個可用於應用程序的選項卡(概述,監視器,線程,分析器)。我們將看到所有4個選項卡。首先,默認選項卡,概述:

此選項卡包含有關啟動的應用程序的主要信息。您可以看到主類,命令行的參數,JVM參數。您還可以看到運行程序的JVM類型以及JVM所在的位置。您可以看到程序中設置的所有屬性。

一個更有趣的選項卡是“監視器”選項卡:

此選項卡遵循您的應用程序的CPU和內存使用。您在此視圖中有4個圖形。第一個,從左到右,從上到下,顯示CPU使用情況和垃圾收集器CPU使用情況。第二個圖形顯示堆空間和PermGen空間的用法。下一個圖顯示應用程序中加載的類的總數,最后一個顯示當前運行的線程數。使用這些圖表,您可以看到應用程序是否占用了CPU,或者應用程序是否使用了內存。

第三個選項卡提供了有關線程的一些細節:

在這個視圖中,您可以看到應用程序的不同線程如何改變狀態以及它們的演進過程。您還可以看到每次通過每個狀態的時間,您可以獲得有關所需線程的詳細信息。

現在,我認為最有趣的選項卡是Profiler的一個:

當您首先打開此選項卡時,它根本不包含任何信息。在查看信息之前,您必須先進行一次剖析。我們將從CPU分析開始。只需點擊CPU按鈕,儀器將開始。在儀器儀表期間,應用程序將被阻止。儀器完成后,您可以再次訪問該應用程序,您將看到在該表中顯示的分析結果。當然,分析在您的應用程序上有一個開銷。通常這是不可見的,但對於某些應用程序,您可以松動大量的流動性。以下是我通過簡單應用獲得的結果:

在我的例子中,我們可以看到waitForTimeout方法占用CPU時間的81.6%。我們還可以看到,notifyDecision和getSensor方法是兩個接下來的大多數CPU消耗方法,也許是優化它們是有趣的。您還可以查看每個調用的次數,也許您會發現一個被調用太多時間的方法。

我們可以做的下一個分析是內存分析。再次,您必須啟動概要分析,儀器將開始,在此期間,應用程序將被凍結。以下是我的應用程序的結果:

這里我們可以看到這個應用程序存儲一些大的double []和float []數組,而且EllipseIterator和BasicStroke類也占用了大量的內存空間。

在內存和CPU分析中,您可以將結果保存到文件以便稍后查看。例如,你可以讓一個應用程序工作一整夜,保存結果早上檢查,或進行三個分析比較三。

總而言之,我不得不說,這個分​​析器是非常簡單的,但也是非常強大的使用。我們有一個我們想要的分析器的主要功能,結果非常好。這種工具真的可以幫助您改進應用程序以減少CPU和內存。當然,這種工具不會做任何事情,它只是幫助顯示應用程序的哪些部分必須改進,改進部分是開發人員的任務,而不是最簡單的任務。但是擁有這種工具是個好的開始。

而且這東西還可以安裝插件,【工具】->【插件】

 

參考:

https://baptiste-wicht.com/posts/2010/07/profile-applications-java-visualvm.html(以上內容轉自此篇文章)

http://jiajun.iteye.com/blog/1180230

https://visualvm.github.io/(官網)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM