QuestJProbe最佳實踐指南_第1頁
QuestJProbe最佳實踐指南_第2頁
QuestJProbe最佳實踐指南_第3頁
QuestJProbe最佳實踐指南_第4頁
QuestJProbe最佳實踐指南_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

Java和J2EE業(yè)務(wù)應(yīng)用程序中的性能格外重要。當(dāng)數(shù)以千計的用戶使用您的應(yīng)用程序時,您不能擔(dān)當(dāng)無視影響應(yīng)用程序牢靠性和伸縮性的問題所帶來的風(fēng)險,和擔(dān)當(dāng)性能瓶頸、內(nèi)存泄漏、進(jìn)程以及未測試代碼等然而很多開發(fā)組在開發(fā)高性能過程中不能執(zhí)行最正確的操作。因此您必需治理性能,治理風(fēng)險。JProbeSuite5.0Java最正確的性能協(xié)調(diào)組件包,供給了高級的、高敏捷性的Java應(yīng)用程序協(xié)調(diào),而不管其在本地運行還是在遠(yuǎn)程運行。組件包中包括:JProbeProfiler、JProbeMemoryDebugger、JProbeThreadalyzerJProbeCoverage。JProbeJProbeProfilerJProbeProfiler是一個前沿的Java工具。JProbeProfiler幫助開發(fā)者快速的診斷Java代碼中性能瓶頸。伴隨著高準(zhǔn)確度的診斷,以及一行行的輸出結(jié)果,開發(fā)者將大大改善應(yīng)用程序性能。隨著客戶Java應(yīng)用程序和J2EE。JProbeProfiler5.010倍。主要特性-定位快速方法,逐步測量每行性能。CPU時間-跟蹤最終用戶感覺的性能或計算瓶頸9共性能矩陣-識別性能問題的實際來源高級過濾和觸發(fā)器-零化代碼臨界區(qū)高級打印和輸出-用AcrobatPDF打印性能分析;將列表數(shù)據(jù)發(fā)送到文本,HTML或類似于Excel的CSV格式JProbeJProbeMemoryDebuggerJProbeMemoryDebugger幫助開發(fā)者快速覺察Java代碼中的內(nèi)存泄漏,降低應(yīng)用程序中內(nèi)存的使用。Java開發(fā)人員能承受JProbe數(shù)據(jù)。供給了以下優(yōu)點:消退了花費較大的內(nèi)存循環(huán)、動態(tài)提高內(nèi)存消耗和應(yīng)用程序性能、指出產(chǎn)生閑散對象的API。JProbeMemoryDebugger5.0添加了更多特性,全部這些特性都是為了削減您查找內(nèi)存泄漏的時間。主要特性內(nèi)存實例計算器-計算內(nèi)存泄漏多少LeakDocotor準(zhǔn)確定位內(nèi)存泄漏的可能來源引用圖和實例具體信息-跟蹤內(nèi)存使用和對象引用基于樹的實例具體視圖-通過對象引用快速跟蹤內(nèi)存泄漏快照差分-識別代碼變化對內(nèi)存使用的影響JProbeJProbeThreadalyzer,同時在效勞Java開發(fā)中占有格外重要的地位。JProbeThreadalyzer能夠監(jiān)測影響應(yīng)用程序性能的線程錯誤。以至于您能快速的獵取與線程相關(guān)的問題的根本。主要特性可視化圖-觀看線程狀態(tài)的變化監(jiān)測特別同步-避開數(shù)據(jù)錯誤JProbeJProbeCoverage為了確保能準(zhǔn)確的測試Java碼。JProbeCoverage幫助您定位未測試代碼,準(zhǔn)確測量執(zhí)行的代碼量。最終將產(chǎn)生高質(zhì)量,耗時短的應(yīng)用程序。JProbe5.010倍,特別改善了Profiling和代碼掩蓋局部。除了以前版本中供給的直線和方法級報表,JProbeCoverage5.0特性就是能生成類級掩蓋報表。主要特性掩蓋掃瞄器和源代碼視圖-快速分別未檢測代碼和死代碼批處理模式-能以批處理模式運行,便利的集成建立/測試系統(tǒng)XMLExcelCSVHTML形式輸出掩蓋快照數(shù)據(jù),用以定制分析快照合并-合并多個平臺運行的整個掩蓋數(shù)據(jù)QuestJProbe最正確實踐指南鑄銳數(shù)碼-編譯發(fā)文時間:2023.10.13介紹在Java率。通過削減必要的設(shè)計,實現(xiàn)和調(diào)試等軟件開發(fā)任務(wù),Java在各種平臺之間極大地改善了集成性和互操作性;其它的開發(fā)環(huán)境都不能供給像Java那樣的強大功能。實際上,沒有一個環(huán)境像J2EE那樣具有明顯的基于框架開發(fā)的優(yōu)點,J2EE能夠快速地構(gòu)建可擴(kuò)展,分布式的安全企業(yè)級應(yīng)用。雖然這些優(yōu)點始終在促進(jìn)J2EEJ2EEJ2EE開發(fā)團(tuán)隊解決這些QuestJProbeProfilerJprobeMemoryDebugger所要解決的問題。J2EE性能概攬一般狀況下,最終用戶對J2EE應(yīng)用性能的體驗與下面層次是嚴(yán)密相關(guān)的:J2EE體系構(gòu)造圖J2EE應(yīng)用是指servlets,JSPs,EJBs和支持類,它們在J2EE應(yīng)用效勞器的上下文環(huán)境中構(gòu)成了客戶的應(yīng)用。J2EE應(yīng)用效勞器是指J2EE應(yīng)用效勞器根底構(gòu)造的設(shè)計,實現(xiàn)和配置,它們供給了客戶J2EE應(yīng)用的上下文環(huán)境。JAVA運行環(huán)境是指JAVA虛擬機及其配置(堆的大小等等)的設(shè)計和實現(xiàn)。平臺-底層硬件(如CPU的數(shù)目,內(nèi)存的大小,I/O子系統(tǒng)等)和操作系統(tǒng)設(shè)計,實現(xiàn)和配置(線程和進(jìn)程調(diào)度,子系統(tǒng)優(yōu)化,整體負(fù)載等)。雖然毫無疑問,底部層次會影響整共性能,閱歷也不斷地說明,性能下降的普遍緣由是由組成J2EE應(yīng)用的Servlets,JSPs和EJBs的設(shè)計問題和不佳的實現(xiàn)造成的。本文將集中爭論在這個底層中如何識別出性能下降的緣由。概述本文描述了在BEAWebLogicServer6.1QuestJProbeMemoryDebuggerProfilerJ2EE應(yīng)用。包括三個主要局部:設(shè)置-在介紹JProbe的體系構(gòu)造之后,我們將描述怎樣把JProbeMemoryDebugger和ProfilerWebLogicServer6.1環(huán)境中。對象循環(huán)分析-在J2EE應(yīng)用中,性能下降的普遍緣由是創(chuàng)立過多的短期對象(也可稱為對象循環(huán))。在這局部里,我們將展現(xiàn)怎樣使用JProbeMemoryDebugger”sGarbageMonitor識別大量創(chuàng)立短期對象的方法。這些是進(jìn)一步分析削減創(chuàng)立過多對象的最正確方法。J2EE性能分析-JProbeProfiler向你介紹怎樣進(jìn)展J2EE應(yīng)用的性能分析,并且在語句級上快速地識別出一些耗時最多的方法。BEAweblogicQuestJProbeQuestJProbeQuestJProbe產(chǎn)品線由一族工具組成,該族工具包括下面四個分析工具。JProbeMemoryDebugger-Java軟件的內(nèi)存使用狀況。JProbeProfiler-Java軟件的性能。JProbeThreadalyzer-識別線程級的死鎖和錯誤的訪問沖突JProbeCoverage-通過供給的語句級執(zhí)行信息驗證測試框架的完整性。雖然本文集中爭論了JProbeMemoryDebugger和Profiler,但全部四個工具都承受了一樣的BEAWebLogic效勞器的集成方法是一樣的。JProbe的體系構(gòu)造一個基于JProbe的調(diào)查會話由兩個程序組成:2JProbe體系構(gòu)造JProbe掌握臺是一個基于Swing的Java應(yīng)用,它供給了用戶圖形界面〔GUISnapshot文件中的信息內(nèi)容。Java虛擬機-JProbeJVMPI(JavaVirtualMachineProfilingInterface)供給的回調(diào)方法,使用標(biāo)準(zhǔn)的Java虛擬機運行Java應(yīng)用并收集分析信息,該虛擬機是由廠商供給的。在WLSJ2EE應(yīng)用中,JavaJavaWebLogic效勞J2EE應(yīng)用部署到上面一樣。這種構(gòu)造具有格外敏捷的啟動方式。你可以從用戶圖形界面本身啟動測試型JavaJavaJProbe掌握臺。JProbeApplicationServerIntegrationToolJProbeApplicationServerIntegration。從左上角下拉列表中選擇你要集成的BEAWeblogic效勞器版本。3JProbeApplicationServerIntegration窗口點擊“Create“按鈕。編輯窗口右邊的內(nèi)容,如圖3所示。編輯下面區(qū)域或使用默認(rèn)值。IntegrationID: JProbeDemo1 IntegrationID,便于重用每次集成過程ServerDirectory:

D:\bea\wlserver6.1

直接輸入WLS效勞器根路徑或者通過“掃瞄“方式輸入。DomainName: MydomainStartupScript: StartWeblogicdJProbe

輸入你想分析的域名。直接輸入要調(diào)查的效勞器的啟動腳本或者通過“掃瞄“方式輸入。Settings:(JPLFile)JavaExecutable:

checktheVARcheckboxd:\sun\jdk1.3.1\bin\Java.exe

JPL(JProbeLaunchpad)文件。假設(shè)要使用由每個工具在啟動時默認(rèn)創(chuàng)立的JPL文件,VAR復(fù)選框。Java虛擬機的執(zhí)行文件路徑。點擊“Advanced>>“按鈕。填寫下面這區(qū)域。JavaOptions:-classic-mx128m-ms64mJava虛擬機輸入?yún)?shù)。點擊“Save“按鈕。4.JProbeApplicationServerIntergation窗口你已經(jīng)成功創(chuàng)立和BEAWeblogic6.1的集成,全部四個工具都可以使用這個集成過程。點擊“Close“按鈕。J2EE應(yīng)用性能下降JProbeMemoryDebugger〔loiteringobjects并且JProbeProfiler能幫助你覺察性能瓶頸。依據(jù)具體狀況,需要具體分析。在這里,我們簡潔地概括用于解決對象循環(huán)和性能瓶頸這兩個常見問題的步驟。更多的信息和其它使用JProbeMemoryDebugger和JprobeProfiler的方法,可以參考在線幫助或者閱讀JProbeMemoryDebuggerGuideJProbeProfilerDeveloper”sGuide。對象循環(huán)〔ObjectCycling〕Java應(yīng)用性能下降的一個主要緣由是創(chuàng)立過多的對象(或稱為對象循環(huán))Java虛擬機安排了過多的內(nèi)存,創(chuàng)立了不必要的對象并對這些對象的初始化,加大了垃圾回收活動,從而引起性能下降。作為一共性能分析人員,你首先需要識別出創(chuàng)立大量短期對象的方法。這些方法是進(jìn)一步做削減創(chuàng)立對象數(shù)量分析的抱負(fù)入手點。JProbeMemoryDebugger供給的一個垃圾監(jiān)視功能可以把對象和安排它們的方法連接起來,并且當(dāng)你的應(yīng)用運行時,可以追蹤有多少對象已經(jīng)被垃圾回收了。JProbeMemoryDebugger的爭論會話啟動JProbeMemoryDebugger。當(dāng)歡送界面消滅的時候,點擊“Run“開頭啟動。5.JProbe歡送界面JProbeLaunchPad窗口中:選擇“UsingApplicationServer“從“ApplicationServer“BEAWeblogic6.1留意在“IntegrationID“下拉的菜單中填寫JProbeDemo1選擇“Filter“a.點擊“Pleaseenterapackage,or methodtodisplaydatafor“。輸入你要調(diào)查的包:profiler.quoteme.stockwatchb“Display“欄的下拉菜單里選擇“Display“選中“MonitorGarbageCollectionsfromProgramStart“復(fù)選框。選擇“SnapshotDirectory:“為d:\temp。點擊“Run“按鈕。6.JProbeLaunchPadPad窗口當(dāng)WebLogicServer初始化時,RuntimeHeapGraphWebLogicServer已經(jīng)被充分初始化后,你就可以開頭著手分析了。運行時交互WebLogicServer已經(jīng)充分初始化,選擇你想要用于分析對象循環(huán)的應(yīng)用用例。選擇GrabageMonitor標(biāo)簽,按下面的步驟:首先運行一次GarbageCollectionJavaGarbageMonitor表隨時更反映這些被回收對象的狀況。點擊“ClearTable“GarbageMonitor表。運行你的應(yīng)用用例。當(dāng)Java虛擬機開頭垃圾回收時,GrabageMonitor表將隨之更。提示:在HeapUsageChart收之前只存活了很短的時間。連在一起的一些急劇升降的負(fù)載峰值是一個明確的信號,意味著是一個對象循環(huán)問題。在完成你應(yīng)用用例后,再次運行GarbageCollection,回收最終安排但不再使用的對象。分析結(jié)果當(dāng)會話完畢時,GarbageMonitor中包含了已回收最多實例的前十個類。通常,這些類不是你自己應(yīng)用的類,準(zhǔn)確地說,它們是被你的一些方法(直接地或間接地)安排的第三方的類。最后一列是安排這些已回收對象的方法名。提示:的類。使用FilterAllocatingMethods,只顯示你包中的一些方法,屏蔽掉其它包中的方法。在我們的例子中,客戶J2EE應(yīng)用定義在profiler.quoteme.stockwatch包里面,所以我們把過濾標(biāo)準(zhǔn)profiler.quoteme.stockwatch.*.*輸入到FilterAllocatingMethods文本輸入掌握中。在GC”ed列中,你能看到你的方法安排了多少實例。作為比較,查看Alive列就能看到還有多少實例仍在堆中。Java開發(fā)者通常會對創(chuàng)立和移走了多少對象而感到驚異。現(xiàn)在你已經(jīng)識別到你有問題的方法。想想你可能怎樣修改這些安排對象的方法,從而削減或排解對象循環(huán)?例如,你可以嘗試重用某個對象或者創(chuàng)立一個可重用的對象池。WebLogicServer6.1編譯JSP后,自動產(chǎn)生了一個servlet類名,并賜予一個包名和類名。TestJSP.jspJSPjsp_servlet.testjsp的類(JSP名跟著兩個下劃線,并且都是小寫字母)。用FilteringClasses為jsp_servlet.*限制GarbageMonitor中的內(nèi)容,可以看到已經(jīng)被垃圾回收到GarbageMonitor中的JSP。在FilteringAllocatingMethods設(shè)置jsp_servlet.*.*或jsp_servlet._<你的JSP名>.*限制GarbageMonitorJSP中查看垃圾回收對象。更深入的爭論假設(shè)你安排的方法沒有一個消滅在GarbageMonitor中,或者在修改明顯的問題后,仍舊有對象循環(huán)的問題你需要進(jìn)展堆棧跟蹤檢查哪個方法的調(diào)用導(dǎo)致了創(chuàng)立實例并安排了空間。需要使用heapsnapshot查看堆棧跟蹤。要了解更多的信息,請看在線幫助里的 GarbageCollectionTutorial或者JProbeMemoryDebuggerDeveloper”sGuide。性能分析解決對象循環(huán)問題有助于性能的改進(jìn),但你可能仍舊面臨著性能瓶頸。進(jìn)展一次性能分析可幫助你在J2EE應(yīng)用中識別低效率的算法。JProbeProfiler供給了應(yīng)用的方法級和源代碼行級度量值。JProbeProfiler調(diào)查會話。啟動JProbeProfiler。當(dāng)歡送界面消滅時,點擊“Run“開頭。8JProbe歡送窗口JProbeLaunchPad窗口中:選擇“UsingApplicationServer“ApplicationServerBEAWeblogic6.1IntegrationIDJProbeDemo1Filter點擊Pleaseenterapackage,class,ormethodtodisplaydatafor。輸入你要調(diào)查的包profiler.quoteme.stockwatchDetailLevelLineLever這個元素定義了我們想要把全部運行在環(huán)境中的Java了解它們的性能信息(我們只是想知道在代碼上的影響,我們不想更細(xì)地分析)提示:WLS6.1JSPProfilingJSPWebLogicServer6.1servlet被賜予一個產(chǎn)生的包和類名。例如,假設(shè)有一個名為TestJSP.jsp的JSP文件,它被編譯后,生成名為jsp_servlet._testjsp的類(兩個底線被JSP名跟著,都是小寫字母)。假設(shè)你想跟蹤你的JSP里的方法在執(zhí)行中花了多少時間,你必需指定正確的過濾策略,用于捕獲數(shù)據(jù)。選擇“CPUTime“選擇“RecordPerformanceatProgramStart“復(fù)選框選擇“aSnapshotDirectory:“為d:\temp點擊“Run“按鈕9JProbeProfilerLaunchPad窗口運行時交互HeapUsageChartGarbageMonitor不同,這里不供給類似的運行時性能信息。使WebLogicServer自己初始化到完全啟動。作為對象循環(huán)分析,我們推舉使用應(yīng)用級的,以用例為中心的方法進(jìn)展性能分析,具體如下:運行你的應(yīng)用用例。性能快照包括時間和在用例運行期間對象創(chuàng)立等度量數(shù)據(jù)(這個運行期間從重設(shè)置性能信息開頭-第一步,始終到執(zhí)行快照完畢,第三步)。解釋結(jié)果JProbeProfiler供給兩個工具,以不同的格式顯示收集到的數(shù)據(jù);可依據(jù)具體狀況選擇:MethodListMethodList可以依據(jù)名稱或度量值排序,或顯示只顯示其中局部方法。CallGraph--是指以有向圖的形式顯示方法??梢允褂肅allGraph查看并跟蹤程序中方法間的調(diào)用關(guān)系。從MethodList或CallGraph中,你能使用下面這些工具深入到更多的細(xì)節(jié)數(shù)據(jù)。MethodDetailView是指對于所選的方法,顯示它們是被哪些方法(也稱父方法)調(diào)用了或它們調(diào)用了哪些方法(也稱子方法)。SourceWindow顯示所選方法的語句級性能信息。TimeandObjectCreationMetricsJProbeProfiler在方法方面收集了三個根本度量值:NumberofCalls是指在會話期間該方法被調(diào)用的次數(shù)MethodTime是指執(zhí)行該方法所花費的總時間MethodObjects是指該方法創(chuàng)立的對象總數(shù)在這些根本的度量值根底上,JProbeProfiler計算出兩種度量值表示方法調(diào)用樹:CumulativeTime總和。CumulativeObjects象的總合NumberofCalls用四種平均度量值:Avg.MethodTime是指調(diào)用方法的時間除以調(diào)用次數(shù)Avg.MethodObjects是指方法對象除以調(diào)用次數(shù)〔方法對象指方法執(zhí)行期間創(chuàng)立的對象數(shù),不包括派生對象創(chuàng)立的數(shù)〕Avg.CumulativeTime是指累積時間除以調(diào)用次數(shù)Avg.CumulativeObjects是指累積對象除以調(diào)用次數(shù)在默認(rèn)狀況下,CallGraph顯示的數(shù)據(jù)是在性能快照中的數(shù)據(jù)。我們建議你關(guān)閉CallGraphMethodList窗口。MethodListMethodList窗口(10)以表的形式顯示性能數(shù)據(jù)。10JProbeProfilerMethodList窗口MethodList能很快識別你最耗時的方法。通常你會覺察你的性能瓶頸和這些方法有關(guān)。假設(shè)你是第一次調(diào)查,跟著下面這些步驟將使你能更有效地使用MethodList。選中你的snapshot,翻開“MethodList“。“Filter“區(qū)域只用于顯示在你包中或在你感興趣的類中的方法。Time“列名,把你最消耗時間的方法排在最前面。認(rèn)真查看前十個。是不是有一些度量值令你驚異?你能改進(jìn)你方法中的算法嗎?點擊“CumulativeTime““MethodTime“和“CumulativeTime“。雖然方法本身可能效率很高,但也可能調(diào)用了低效率的方法,這些低效率的方法可能在你的代碼中,或者在第三方的包或應(yīng)用框架中。點擊”NumberofCalls”列名,查看一下你哪個方法被調(diào)用最多。假設(shè)一個或多個度量值同時反映這些方法是低效率的,需要考慮削減調(diào)用這些方法,或調(diào)用那些效率稍好的方法。3.2.3.3.CallGraphCallGraph(見圖11)供給一個格外有力的方法調(diào)用關(guān)系視圖。它把J2EE應(yīng)用放到WebLogicServerWebLogicJ2EE應(yīng)用的線程。為了便利查找,CallGraph下面有“MethodList“。當(dāng)分析性能時,在定位J2EE應(yīng)用的入口點和排解與WebLogic線程有關(guān)的數(shù)據(jù)方面,CallMethod是最有效的。在分別出應(yīng)用的數(shù)據(jù)根底上,可快速畫出執(zhí)行流程,并用圖形清楚地顯示出來。下面是使用CallMethod的有效技巧:snapshot,翻開“CallGraph“。點擊“Find“并且定位你的J2EE應(yīng)用的入口位置。通常是servlet中的doGet或doPost方法。顯示方法的一個子集作為開頭,這些方法依據(jù)“C

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論