在生產(chǎn)中調(diào)試性能問(wèn)題可能是一件痛苦的事情,在某些情況下,如果沒(méi)有正確的工具,調(diào)試性能問(wèn)題是不可能的。Java分析一直存在,但大多數(shù)開發(fā)人員所考慮的Java分析器只有一種類型:標(biāo)準(zhǔn)JVM分析器。想了解有關(guān)java更多詳細(xì)信息,建議參加Java培訓(xùn),通過(guò)系統(tǒng)全面的學(xué)習(xí),可以快速提升自己。
然而,僅使用一種類型的分析器是不夠的。在這篇文章中,我們將討論三種類型的Java分析器,以及為什么在開發(fā)應(yīng)用程序時(shí)需要所有這些分析器。
1.標(biāo)準(zhǔn)JVM分析器
VisualVM、JProfiler、YourKit和Java任務(wù)控制等產(chǎn)品。
JVM分析器將跟蹤所有方法調(diào)用和內(nèi)存使用情況。這允許開發(fā)人員以他們選擇的任何角度深入調(diào)用結(jié)構(gòu)。
優(yōu)點(diǎn):
標(biāo)準(zhǔn)配置文件非常適合跟蹤內(nèi)存泄漏,它詳細(xì)列出了JVM的所有內(nèi)存使用情況以及哪些類/對(duì)象負(fù)責(zé)。手動(dòng)運(yùn)行垃圾收集,然后檢查內(nèi)存消耗的能力可以很容易地將注意力集中在錯(cuò)誤內(nèi)存的類和進(jìn)程上。在java培訓(xùn)中,有系統(tǒng)全面的理論知識(shí)和企業(yè)級(jí)實(shí)戰(zhàn)項(xiàng)目,可以讓你真正掌握java知識(shí)和技能,更好地進(jìn)行項(xiàng)目開發(fā)。
Java分析器非常適合跟蹤C(jī)PU使用情況,它通常提供一個(gè)CPU采樣功能,按類和方法跟蹤和聚集CPU時(shí)間,以幫助鎖定熱點(diǎn)。
缺點(diǎn):
需要直接連接到受監(jiān)視的JVM;在大多數(shù)情況下,這最終限制了開發(fā)環(huán)境的使用。(注意:某些分析器可以以有限的方式在線程外和內(nèi)存轉(zhuǎn)儲(chǔ)中工作。)
它們會(huì)減慢你的應(yīng)用程序;對(duì)于所提供的高水平的細(xì)節(jié),需要大量的處理能力。
2.輕量級(jí)Java事務(wù)分析器
XRebel和Stackify Prefix等產(chǎn)品。
輕量級(jí)分析程序采用不同的方法跟蹤你的應(yīng)用程序,將它們直接注入到代碼中。如果你正在考慮如何快速學(xué)習(xí)java,那么參加java培訓(xùn)掌握更全面的知識(shí)和技能將是一個(gè)很好的開始。
l Aspect分析器使用面向方面編程(AOP)將代碼注入指定方法的開始和結(jié)束。注入的代碼可以啟動(dòng)計(jì)時(shí)器,然后在方法完成時(shí)報(bào)告經(jīng)過(guò)的時(shí)間。這些配置文件很容易設(shè)置,但你需要知道要配置什么。
l Java代理分析器使用Java Instrumentation API將代碼注入到應(yīng)用程序中。由于代碼是在字節(jié)碼級(jí)別重寫的,因此該方法對(duì)你的應(yīng)用程序具有更大的訪問(wèn)權(quán)限。這允許對(duì)應(yīng)用程序中運(yùn)行的任何代碼進(jìn)行檢測(cè),無(wú)論是你編寫的代碼還是應(yīng)用程序所依賴的第三方庫(kù)。
Aspect 分析器非常容易設(shè)置,但它們所能監(jiān)控的內(nèi)容有限,而且需要詳細(xì)列出你想要跟蹤的所有內(nèi)容。Java代理在跟蹤深度方面有很大的優(yōu)勢(shì),但編寫起來(lái)要復(fù)雜得多。如果你也打算從事java行業(yè),可以參加java培訓(xùn)來(lái)提升自己,有老師帶你快速入門,很快就能掌握java知識(shí)和技能。
Stackify Prefix是一個(gè)面向開發(fā)人員的Java分析器,在后臺(tái)使用Java代理分析器方法。很酷的是,Prefix已經(jīng)知道了開發(fā)人員最想要的類和第三方庫(kù),所以你不必詳細(xì)說(shuō)明它們。此外,它從儀器中獲取所有統(tǒng)計(jì)數(shù)據(jù),并以簡(jiǎn)單易懂的方式顯示它們。
3.低開銷,生產(chǎn)中的Java JVM分析(APM)
到目前為止,所有的評(píng)測(cè)器都非常適合開發(fā),但跟蹤系統(tǒng)在生產(chǎn)中的表現(xiàn)至關(guān)重要。生產(chǎn)總是一個(gè)不同的環(huán)境,開發(fā)和登臺(tái)設(shè)置通常沒(méi)有相同的數(shù)據(jù)集和負(fù)載。
Java APM工具通常使用Java代理分析器方法,但具有不同的檢測(cè)規(guī)則,以允許它們?cè)诓挥绊懏a(chǎn)品性能的情況下運(yùn)行。這些分析器的訣竅是以智能的方式提供正確的信息,而不占用CPU周期。想學(xué)習(xí)java技術(shù),建議考慮報(bào)名參加Java培訓(xùn),有明確的學(xué)習(xí)路線和全面系統(tǒng)的課程,能獲得較快提升。
Stackify的Retrace是一種APM工具,它使用與Stackify Prefix相同的技術(shù),只需進(jìn)行一些調(diào)整即可在登臺(tái)和生產(chǎn)環(huán)境中順利運(yùn)行。這是通過(guò)聚合定時(shí)統(tǒng)計(jì)信息和采樣軌跡來(lái)實(shí)現(xiàn)的。這為你提供了在生產(chǎn)環(huán)境中運(yùn)行的應(yīng)用程序代碼的方法級(jí)可見(jiàn)性。
因此,當(dāng)你有一個(gè)緩慢的web請(qǐng)求時(shí),這將轉(zhuǎn)化為Retrace中顯示的跟蹤。從那里你可以深入了解什么方法是罪魁禍?zhǔn)住?/span>
總結(jié)
既然你已經(jīng)了解了三種類型的Java代碼分析器,現(xiàn)在是時(shí)候決定是否真的需要它們了。答案取決于應(yīng)用程序的性質(zhì)。
如果它很小,像本地企業(yè)或商店的費(fèi)用管理系統(tǒng),那么分析非常簡(jiǎn)單,一個(gè)標(biāo)準(zhǔn)的分析器將完成這項(xiàng)工作;如果你正在開發(fā)一個(gè)web應(yīng)用程序,如快遞設(shè)施的跟蹤系統(tǒng),那么你的應(yīng)用程序可能會(huì)被成千上萬(wàn)的用戶訪問(wèn)。在這種情況下,你還需要用于生產(chǎn)環(huán)境的APM工具;最后,如果你的應(yīng)用程序是針對(duì)嵌入式系統(tǒng)的,那么你將需要這三種應(yīng)用程序。做好選擇,開發(fā)一個(gè)能夠提供最佳性能的應(yīng)用程序會(huì)很有趣。想要學(xué)習(xí)java更多知識(shí)和技能,可以考慮參加java培訓(xùn),有經(jīng)驗(yàn)豐富的專業(yè)講師指導(dǎo)教學(xué),有緊跟市場(chǎng)需求的實(shí)時(shí)課程,可以讓你快速掌握這門技術(shù),節(jié)約時(shí)間,少走彎路。