MyEclipse包含了Sun公司的VisualVM分析器的高級(jí)集成。剖析可以為您收集有關(guān)應(yīng)用程序的數(shù)據(jù),因?yàn)樗鼈冞\(yùn)行并監(jiān)測(cè)數(shù)據(jù)的統(tǒng)計(jì)。
- 剖析一個(gè)獨(dú)立的Java應(yīng)用程序
- 剖析一個(gè)Web應(yīng)用程序
- 剖析一個(gè)Java小程序
持續(xù)時(shí)間:20分鐘
沒(méi)有MyEclipse?
1. 確保分析器安裝
VisualVM被包含在MyEclipse當(dāng)中,但其卻未必是您基礎(chǔ)安裝配置的一部分。如果沒(méi)有安裝,您可以很容易地添加組件。
(1)選擇Help>Choose Components。
(2)在Selected中,在過(guò)濾字段中輸入VM找到MyEclipse VisualVM的分析器組件。
檢查VisualVM的Profiler軟件
(3)如果未安裝VisualVM,從左側(cè)選擇它并將其移動(dòng)到右側(cè)添加的組件中。為了可靠地分析,您的應(yīng)用程序必須在JRE 1.6.0更新的7或者更高的版本中執(zhí)行。
2. 剖析一個(gè)獨(dú)立的Java應(yīng)用程序
(1)選擇MyEclipse>Examples On-Demand來(lái)下載示例項(xiàng)目的分析。
(2)點(diǎn)擊搜索,然后搜索swing。
(3)點(diǎn)擊Swing Contact Manager安裝按鈕示例來(lái)將其安裝到您的工作區(qū)中。
安裝示例應(yīng)用程序
2.1 性能分析
(1)右鍵單擊M4M Contact Manager示例項(xiàng)目,并選擇Profile As>Java Application。這將啟動(dòng)性能分析模式的剖析。
啟動(dòng)性能分析模式
(2)選擇Main – com.myeclipseide.examples.m4m作為主類,然后單擊確定,并選擇性能分析模式,然后點(diǎn)擊確定繼續(xù)。
(3)在contact manager應(yīng)用程序中選擇一些新的名稱來(lái)觀察分析,此信息會(huì)被收集到VisualVM窗口。
當(dāng)名稱被選中收集配置文件信息
(4)在列表中選擇一個(gè)名稱,然后單擊刪除會(huì)看到removeButtonActionPerformed方法被添加到列表中,以1為它的調(diào)用計(jì)數(shù),每次單擊刪除后此計(jì)數(shù)都將增加。
結(jié)果用刪除按鈕
(5)點(diǎn)擊保存此時(shí)收集到的結(jié)果快照。使用過(guò)濾器來(lái)只顯示您要查看的信息,您可以將其保存為以后要研究的文件。
過(guò)濾快照信息
(6)關(guān)閉應(yīng)用程序和VisualVM的窗口。
要在此運(yùn)行分析會(huì)話,可以重復(fù)步驟1或者點(diǎn)擊分析圖標(biāo)的下拉箭頭。選擇您要查看的剖析配置,如果先前所分析的應(yīng)用程序仍在運(yùn)行,在您啟動(dòng)另一個(gè)分析會(huì)話之前系統(tǒng)會(huì)提示將其關(guān)閉。
從工具欄中運(yùn)行配置文件
2.2 自定義性能分析
(1)右鍵單擊該項(xiàng)目,并選擇Profile As>Profile Configurations,或者點(diǎn)擊文件圖標(biāo)的下拉菜單,并選擇Profile Configurations。
打開(kāi)配置文件配置
(2)在Java應(yīng)用程序節(jié)點(diǎn)下,從走遍的列表中選擇應(yīng)用程序。
(3)選擇配置文件選項(xiàng),然后在性能選項(xiàng)中更改分析器設(shè)置。
性能分析器設(shè)置
配置文件
- 此字段指定根方法分析器使用您應(yīng)用程序的儀表,只有根方法和在應(yīng)用程序其余部分繼續(xù)運(yùn)行的方法被稱為儀表。
- 使用添加按鈕來(lái)指定一個(gè)方法、類或包。如果指定一個(gè)類,那么類的所有方法都會(huì)成為儀表的根。如果指定了一個(gè)包,那么包中所包含的所有類方法會(huì)成為儀表的根(根據(jù)您在根分析向?qū)е械倪x擇,這就意味著只有被選中的包或子包)。
- 默認(rèn)情況下,MyEclipse規(guī)定根包括項(xiàng)目中的所有包。
只/不要配置文件下面的類
- 該分組過(guò)濾器控制這些包被(或者不)分析。除了根方法本身以外,如果方法滿足此處的定義,那么分析數(shù)據(jù)值被收集和顯示。
- 默認(rèn)情況下,MyEclipse為一個(gè)只包含在項(xiàng)目中的包指定一個(gè)過(guò)濾器,您可以在Lazy、Eager和Total儀表之間進(jìn)行選擇。
儀表方案
- Lazy(MyEclipse默認(rèn)值):由于它的低開(kāi)銷,所以它是長(zhǎng)時(shí)間運(yùn)行儀表的最佳方案。當(dāng)使用這個(gè)方案時(shí),首先檢測(cè)的就是根的方法。當(dāng)?shù)谝淮螆?zhí)行根方法時(shí),所有的方法調(diào)用都會(huì)被檢測(cè)。
- Total:在這個(gè)方案中,當(dāng)加載類時(shí)這個(gè)類中的所有方法都要檢測(cè)。對(duì)于長(zhǎng)期運(yùn)行的應(yīng)用程序來(lái)說(shuō),由于它的高分析開(kāi)銷,因此它并不是一個(gè)好的方案。然而對(duì)于那些短暫工作的應(yīng)用程序來(lái)說(shuō),在分析啟動(dòng)應(yīng)用程序時(shí)它是有用的。
- Eager:在這個(gè)方案中,每當(dāng)一個(gè)類被加載時(shí),分析器都將通過(guò)根方法直接或間接的定位儀表。因此儀表的方法數(shù)量比Lazy方案高得多,但是比Total更低。
分析啟動(dòng)時(shí)的基本框架
- 如果應(yīng)用程序的JVM啟動(dòng)也選擇profiled.During性能分析的方法,在性能分析的跟蹤方法中,進(jìn)入和退出呼叫的方法會(huì)插入到各儀表的方法中。根據(jù)所使用的跟蹤技術(shù),這些呼叫可能會(huì)需要時(shí)間戳。
方法跟蹤
- 精確:有了精確的跟蹤,在每個(gè)方法被調(diào)用的時(shí)間中進(jìn)入和退出呼叫采用時(shí)間戳。這將會(huì)給你準(zhǔn)確的執(zhí)行方法的時(shí)間讀數(shù)(進(jìn)入和退出相應(yīng)通話的時(shí)間),但由于大量調(diào)用OS高精度計(jì)時(shí)器會(huì)增加分析的開(kāi)銷。
- 采樣:時(shí)間戳采用的只是方法進(jìn)入和退出呼叫時(shí)指定的采樣發(fā)生在interva的末端。其方法調(diào)用仍計(jì)算準(zhǔn)確,這個(gè)選項(xiàng)就大大降低了分析的開(kāi)銷,但其結(jié)果的準(zhǔn)確性可能比那些使用精度技術(shù)的更低一些。
儀表方法調(diào)用()
- 如果啟用,所有的呼叫都使用反射(java.lang.reflect.Method.invoke())的跟蹤和儀表。
儀表getter / setter方法
儀表的空方法
分析新的threads / runnables
- 如果啟用,每次可運(yùn)行的run()方法來(lái)視為根方法,也將導(dǎo)致調(diào)用一切方法來(lái)進(jìn)行檢測(cè)。
排除時(shí)間花費(fèi)在Thread.sleep()和Object.wait()上
分析線程數(shù)限制
- 分析數(shù)據(jù)只從注冊(cè)線程時(shí)收集。當(dāng)未注冊(cè)的線程進(jìn)入儀表代碼時(shí),它就被注冊(cè)了。當(dāng)注冊(cè)的線程的數(shù)目達(dá)到指定的限制,進(jìn)一步停止登記。該計(jì)數(shù)器可以在分析器復(fù)位時(shí)重置收集的結(jié)果。
2.3 內(nèi)存性能分析
(1)右鍵單擊該項(xiàng)目,選擇Profile As>Profile Configurations,并從列表左側(cè)的Java應(yīng)用程序節(jié)點(diǎn)下選擇您的項(xiàng)目。
(2)選擇配置文件選項(xiàng),然后選擇內(nèi)存選項(xiàng)。
內(nèi)存配置文件設(shè)置
(3)自定義設(shè)置,然后單擊配置文件來(lái)啟動(dòng)內(nèi)存分析。
僅記錄對(duì)象創(chuàng)建
- 選中后,分析器收集有關(guān)的數(shù)量、類型和分配對(duì)象的位置信息。目前由目標(biāo)JVM(和它加載的每個(gè)新類)來(lái)加載所有類儀表。
記錄對(duì)象創(chuàng)建和垃圾收集
- 如果選擇此選項(xiàng),除了上述選項(xiàng)提供的數(shù)據(jù),你也給有關(guān)對(duì)象生動(dòng)活潑的信息,即有多少給定類型的對(duì)象仍然存在。分析垃圾收集除了創(chuàng)建對(duì)象還增加了分析開(kāi)銷。
跟蹤每一個(gè)X分配
- 盡管特定類別的分配對(duì)象的數(shù)量會(huì)被準(zhǔn)確地跟蹤,但完整的分析數(shù)據(jù)是單獨(dú)進(jìn)行跟蹤的,并且并且只收集每一個(gè)X(即類)個(gè)對(duì)象的分配。記錄有關(guān)每一個(gè)分配信息,該圖可以被設(shè)置為1,盡管這會(huì)顯著的增加分析開(kāi)銷。默認(rèn)情況下,MyEclipse跟蹤每10個(gè)對(duì)象分配。
分配記錄的堆棧跟蹤
- 如果啟用,當(dāng)對(duì)象創(chuàng)建被記錄時(shí),此時(shí)的調(diào)用堆棧也會(huì)被記錄。默認(rèn)情況下,整個(gè)調(diào)用堆棧都會(huì)被記錄,但限制堆棧深度與X幀選項(xiàng)可以用于限制幀的數(shù)目,并減少分析開(kāi)銷。
顯示對(duì)象分配痕跡的內(nèi)存快照
3. 分析一個(gè)Web應(yīng)用程序
(1)右鍵單擊Web項(xiàng)目,并選擇Profile As>MyEclipse Server Application。
啟動(dòng)web應(yīng)用分析
(2)自定義設(shè)置按照第2節(jié)中的說(shuō)明。分析配置您的Web應(yīng)用程序是在MyEclipse服務(wù)器應(yīng)用節(jié)點(diǎn)配置文件中的配置窗口下。
Web應(yīng)用程序的配置文件設(shè)置
4. 分析一個(gè)Java小程序
(1)右鍵單擊小程序的項(xiàng)目,并選擇Profile As>Java Applet。
啟動(dòng)Java小程序分析
(2)自定義設(shè)置按照第2節(jié)中的說(shuō)明。分析配置您的Java小程序是在Java Applet配置文件中的配置窗口下。
對(duì)Java小程序的配置文件設(shè)置
5. 其他的VisualVM功能
在VisualVM的監(jiān)視器選項(xiàng)中包含應(yīng)用程序的當(dāng)前狀態(tài)、CPU和內(nèi)存的使用情況概述。
顯示器選項(xiàng)
線程選項(xiàng)包含了您的應(yīng)用程序的線程列表。
Threads選項(xiàng)
以及您可以深入到獲得特定線程的詳細(xì)信息。
Threads選項(xiàng)詳細(xì)信息
點(diǎn)擊應(yīng)用程序按鈕,右鍵單擊您的應(yīng)用程序并選擇Thread或堆轉(zhuǎn)儲(chǔ)。
轉(zhuǎn)儲(chǔ)申請(qǐng)
線程轉(zhuǎn)儲(chǔ)
堆轉(zhuǎn)儲(chǔ)
標(biāo)簽:
Java開(kāi)發(fā)工具MyEclipse
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都控件網(wǎng)