java 對比工具_Java幾款性能分析工具的對比

在給客戶進行應用程序維護的過程中,我注意到一些關于高負載條件下的性能問題。理論上,增加對應用程序的負載會使性能有所下降,但是我認為性能下降的比率遠遠高于負載的增加,同時我也發現,性能可以通過改變應用程序的邏輯來提升。為了更詳細地了解這一點,我們需要做一些性能分析,這時,我們自然就要用到一些性能分析工具。Java有許多的性能分析工具,可以幫助我們弄清楚這個問題,但是我們應該使用哪一款工具呢?

為了做出正確的選擇,我列出性能分析應滿足一些最低要求:

必須包括對應用程序的類、方法及時間的監測

必須包括對內存的監測

必須具有易用性

我配置了一個使用RESTful接口的Spring應用程序,使用MongoDB作為數據存儲,還使用Solr搜索,并在Tomcat服務器上部署。

參考工具:

1.VisualVM

VisualVM是一個資源分析工具,一直從JDK 6更新到7,它默認內存和CPU的監視,它可以告訴你哪個類和方法消耗資源,但它不會顯示代碼流程。

2.JProfiler

JProfiler很容易安裝,并且通過向導,你可以選擇應用服務器用來運行應用程序。我不得不選擇使用JPofiler應用服務器的主目錄,以及向導生成的一個單獨的啟動腳本。然后運行服務器。在監聽會話的過程中,它會提供幾個選項,它可以記錄內存的使用和CPU的使用率。在查看CPU使用率的同時,可以看到執行路徑。這讓我看到應用程序大部分時間都花在請求上。我們可以將IntelliJ插件安裝到IDE上,那么運行JProfiler會更加便利。比如,可以直接幫我啟動Tomcat。

3.YourKit

YourKit是我在另一個項目中偶然發現的一款性能分析工具,它的安裝很簡單。安裝時有一個選項,可以安裝一個插件到我的IDE。安裝后,運行應用程序,使用該插件,它會自動連接到YourKit。它有一個漂亮的用戶界面可以查看到內存和CPU的監測,同時也可以看到請求的執行路徑。

4.JProbe

我剛開始創建JProbe時遇到點困難。安裝并不是直接完成,我需要對它進行配置。它采用了類似JProfiler一樣的設置。它會在你的Tomcat目錄中生成啟動腳本,可以通過腳本啟動服務器并監聽會話。它的界面包含有按鈕和表格,其中可以看到內存的使用,但無法在進程中找到執行路徑。

5.Spring Insight

聽到TC Server有Spring Insight監控界面,于是我興奮地嘗試了一下。安裝完成后,并設置成TC Server的開發者版,然后部署應用程序在TC Server上。我查看Insight界面,它可以很好的監視類和方法,并能看到完成這個方法用了多少時間。我還能看到輸入參數值,以及返回值。由于我的應用程序是基于Spring的,Spring Insight能夠提供非常有用的數據。TC Server插件在IDE上的配置與Tomcat的配置類似。SpringSource工具套件就自帶Spring Insight。

結? 論

看到這五款性能分析工具,我可以肯定地說,它們都非常不錯。如果你有基于Spring的應用程序,那么選擇Spring Insight顯然是最佳的。它一直是免費的,但你需要部署你的應用在TC Server上。

如果你想監聽本地和遠程的進程,我會選擇JProfiler或YourKit.這兩個也可以幫助Spring Insight來監測、找到性能瓶頸。

JProfiler和YourKit已經能滿足我的上述要求。JProfiler、YourKit和Spring Insight都可以跟蹤應用程序的類和方法的流向。JProfiler和YourKit可以顯示內存使用情況。雖然Spring Insight不可以顯示內存使用情況,但它可以很好的顯示吞吐量的趨勢。這三款性能分析工具功能很清楚,不混亂,而且容易使用。最后,他們都有自己的 IDE插件。希望本文能幫助你做出正確的選擇。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/443084.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/443084.shtml
英文地址,請注明出處:http://en.pswp.cn/news/443084.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java for循環獲取value_Java遍歷取出Map集合key-value數據的4種方法

將map集合存數據與取出數據全部放在一個類MapTest中,方便閱讀與查看隨便創建一個包,在包中新建一個class文件,(也可以不建包,直接新建一個class文件)新建class文件MapTest.java,代碼如下:import java.util.HashMap;imp…

as3調用java_關于openamf我用as3鏈接java程序,并調用相關的方法,但是能夠連上,卻不能夠調用是怎么回事...

我用的openamf做flashremoting服務器是沒問題的!這是as的代碼!package{importflash.display.Sprite;importflash.net.ObjectEncoding;importcom.riafan.remoting.PendingCall;import...我用的openamf做flash remoting服務器是沒問題的!這是as…

phoenix hbase java_java jdbc訪問hbase phoenix

上面直接介紹了druid訪問hbase phoenix的案例hbase Phoenix整合mybatis DruidDataSource這里還是貼一下jdbc直接訪問的方式。public static void main(String[] args) {try {Class.forName("org.apache.phoenix.jdbc.PhoenixDriver");Properties propertiesnew Prope…

mp4v2 寫mp4 java_使用mp4v2將H264+AAC合成mp4文件

錄制程序要添加新功能:錄制CMMB電視節目,我們的板卡發送出來的是RTP流(H264視頻和AAC音頻),錄制程序要做的工作是:(1)接收并解析RTP包,分離出H264和AAC數據流;(2)將H264視頻和AAC音頻以某種格式封裝&#x…

java完全解耦_java-完全解耦

完全解耦:降低代碼的限制性,是同一代碼能夠用到更多的程序中1 packageinterfaces.interfaceprocessor;2 import staticnet.mindview.util.Print.print;34 interfaceProcessor {5 String name();6 Object process(Object input);7 }8 public classApply{9…

java驗證xml格式是否正確的是_spring源碼附錄(1)java實現對XML格式的驗證

最近在看spring源碼,涉及到xml文檔的解析、xml文檔的格式驗證,發現自己對xml解析的基礎較為薄弱,本篇博客復習下DOM方式解析xml(即spring解析xml的方式)。DOM解析XML是將整個XML作為一個對象,占用內存較多。另外一個java官方的XML…

java 批量打印_JAVA批量打印皕杰報表

原標題:JAVA批量打印皕杰報表不使用皕杰報表工具條上的打印按鈕,用java怎么實現批量打印皕杰報表呢?解決方案:皕杰報表提供了批量打印的工具類ReportToolkits,ReportToolkits類參考幫助文檔-開發指南-javadoc-bios.rep…

java 截串_java字符串截取

import org.apache.commons.lang.stringutils;public class substr{public static void main(string[] args) {string str "1234567890abcdefg";system.out.println("-----------" str.substring(0)); //從字符串索引為0開始截取,一直到字符串…

java json 構造_json 構造和解析

目錄:(1)引入jar包;(2)json的構造;(3)json的解析;(4)遍歷未知key。(1)java對json的處理,可借助org.json.jar.org.jsonjson20090211(2)json的構造//construct json and output itpublic String constructJson() throws …

java http 上傳文件_java利用httpClient實現后臺文件上傳請求

之前寫過基于html和js的文件上傳方法java 用springMVC 和HttpServletRequest 兩種實現文件上傳的方法和httpClient后臺執行普通post請求的文章java通過httpClient從接口請求數據入庫以及自動生成實體工具類,最近接到一個需求,需要用到后臺去調用遠程服務…

morse java_華威MORSE,華威數統那個比較好?

其實沒什么高下之分了。 畢竟大家都在一個系,上下課交作業都在一起。我個人覺得,數統要比morse更flexible一些。首先你要明白morse和數統課程上的區別在哪里:數統 大一必修數統大一必修共計84CATSmorse大一必修morse大一必修共計120CATS其實差的就是EC10…

java中 以下接口以鍵_java復習題

1.Java中的long類型占用()個字節。A、1B、2C、4D、82.以下關于繼承的敘述不正確的是()。A、在Java中類只允許單一繼承B、在Java中一個類只能實現一個接口C、在Java中一個類可以同時繼承一個類和實現一個接口D、在Java中接口允許多繼承3.4&…

Java游戲有易筋經_易筋經- JavaWeb-1

JavaScript一種直譯式腳本語言,是一種動態類型、弱類型、基于原型的語言,內置支持類型。它的解釋器被稱為JavaScript引擎,為瀏覽器的一部分,廣泛用于客戶端的腳本語言組成部分:ECMAScript:js基礎語法(規定 關鍵字 運算符 語句 函數…

java導出hbase表數據_通用MapReduce程序復制HBase表數據

編寫MR程序,讓其可以適合大部分的HBase表數據導入到HBase表數據。其中包括可以設置版本數、可以設置輸入表的列導入設置(選取其中某幾列)、可以設置輸出表的列導出設置(選取其中某幾列)。原始表test1數據如下:每個row key都有兩個版本的數據,…

java雙語試卷_Java程序設計基礎(雙語)試題題目及答案,課程2021最新期末考試題庫,章節測驗答案...

若二項式(x+13x)n的展開式中含3x的項是第三項,則n的值是______.(x2+1ax)6(a>0)的展開式中常數項是15,那么展開式中所有項系數和是______.(x2+1ax)6(a>0)的展開式中常數項…

java服務器和linux_在Linux下開一個Java服務器(使用CatServer Pro)

引言Linux開服具有快速,高效,性能等特點,而Windows雖然簡單,但是不具備Linux良好的性能。本教程就說明一下簡單的Linux開服方式(需要教程的人,如果你學會后,請無償幫助更多的人。)服務器準備首先。先準備一…

java中js九個隱含對象_第九章 JSP標簽——《跟我學Shiro》

Shiro提供了JSTL標簽用于在JSP/GSP頁面進行權限控制,如根據登錄用戶顯示相應的頁面按鈕。導入標簽庫標簽庫定義在shiro-web.jar包下的META-INF/shiro.tld中定義。guest標簽歡迎游客訪問,登錄用戶沒有身份驗證時顯示相應信息,即游客訪問信息。…

java中jsp標準動作_JavaBean和jsp標準動作

一.JavaBean 1.理解:可以重用的java類 2.分類 1)封裝數據的bean(相當于實體類) 2)封裝業務的bean(一般就是實現增刪改查) 3.注意: 1)封裝數據的bean一般要滿足如下兩個條件 1.implements Serializable:實現序列化接口 2.擁有一個無參的public…

我的世界java版游戲崩潰_我的世界全攻略之-游戲崩潰的解決方法

我的世界崩潰怎么辦?下面吾愛網小編給大家帶來我的世界無法正常啟動的解決方法,需要的朋友可以參考下。我的世界作為許多玩家都十分喜愛的模擬經營沙盤類游戲,經常有玩家反映在玩我的世界的時候,游戲總是會出現崩潰或者無法啟動的情況,玩家在遇到的時候不知道怎么辦…

手寫實現java中的trim_JS中字符串trim()使用示例

示例一:測試JS擴展方法// 合并多個空白為一個空白String.prototype.ResetBlank function() { //對字符串擴展var regEx /\s/g;return this.replace(regEx, );};window.onload function(){var str "你 在他想還好嗎?";alert(str);str str.ResetBlan…