中文字幕日韩一区二区_国产一区二区av_国产毛片av_久久久久国产一区_色婷婷电影_国产一区二区精品

常用 Java Profiling 工具的分析與比較

  相對(duì)于靜態(tài)代碼分析,Profiling 是通過(guò)收集程序運(yùn)行時(shí)的信息來(lái)研究程序行為的動(dòng)態(tài)分析方法。其目的在于定位程序需要被優(yōu)化的部分,從而提高程序的運(yùn)行速度或是內(nèi)存使用效率。收集程序運(yùn)行時(shí)信息的方法主要有以下三種:

  • 事件方法:對(duì)于 Java,可以采用 JVMTI(JVM Tools Interface)API 來(lái)捕捉諸如方法調(diào)用、類(lèi)載入、類(lèi)卸載、進(jìn)入/離開(kāi)線程等事件,然后基于這些事件進(jìn)行程序行為的分析。
  • 統(tǒng)計(jì)抽樣方法(sampling): 該方法每隔一段時(shí)間調(diào)用系統(tǒng)中斷,然后收集當(dāng)前的調(diào)用棧(call stack)信息,記錄調(diào)用棧中出現(xiàn)的函數(shù)及這些函數(shù)的調(diào)用結(jié)構(gòu),基于這些信息得到函數(shù)的調(diào)用關(guān)系圖及每個(gè)函數(shù)的 CPU 使用信息。由于調(diào)用棧的信息是每隔一段時(shí)間來(lái)獲取的,因此不是非常精確的,但由于該方法對(duì)目標(biāo)程序的干涉比較少,目標(biāo)程序的運(yùn)行速度幾乎不受影響。
  • 植入附加指令方法(BCI): 該方法在目標(biāo)程序中插入指令代碼,這些指令代碼將記錄 profiling 所需的信息,包括運(yùn)行時(shí)間、計(jì)數(shù)器的值等,從而給出一個(gè)較為精確的內(nèi)存使用情況、函數(shù)調(diào)用關(guān)系及函數(shù)的 CPU 使用信息。該方法對(duì)程序執(zhí)行速度會(huì)有一定的影響,因此給出的程序執(zhí)行時(shí)間有可能不準(zhǔn)確。但是該方法在統(tǒng)計(jì)程序的運(yùn)行軌跡方面有一定的優(yōu)勢(shì)。

  目前市面上的 Java Profiler 工具采用的信息收集方法通常是以上三種方法的任意組合。

Profiler 工具功能簡(jiǎn)介

  雖然市場(chǎng)上的 Java Profiler 工具有不少,但是基本功能大多相似,本節(jié)首先對(duì)這些基本功能進(jìn)行介紹。

  • 遙測(cè)(Telemetry):遙測(cè)是一種用來(lái)查看應(yīng)用程序運(yùn)行行為的最簡(jiǎn)單的方法。通常會(huì)有多個(gè)視圖(View)分別實(shí)時(shí)地顯示 CPU 使用情況、內(nèi)存使用情況、線程狀態(tài)以及其他一些有用的信息,以便用戶(hù)能很快地發(fā)現(xiàn)問(wèn)題的關(guān)鍵所在。CPU Telemetry視圖一般用于顯示整個(gè)應(yīng)用程序的 CPU 使用情況,有些工具還能顯示應(yīng)用程序中每個(gè)線程的 CPU 使用情況。

      Memory Telemetry視圖一般用于顯示堆內(nèi)存和非堆內(nèi)存的分配和使用情況。

          Garbage Collection Telemetry視圖顯示了 JVM 中垃圾收集器的詳細(xì)信息。

          Threads Telemetry視圖一般用于顯示當(dāng)前運(yùn)行線程的個(gè)數(shù)、守護(hù)進(jìn)程的個(gè)數(shù)等信息。

          Classes Telemetry視圖一般用于顯示已經(jīng)載入和還沒(méi)有載入的類(lèi)的數(shù)量。

  • 快照(snapshot):應(yīng)用程序啟動(dòng)后,profiler 工具開(kāi)始收集各種執(zhí)行數(shù)據(jù),其中一些數(shù)據(jù)直接顯示在遙測(cè)視圖中,而另外大部分?jǐn)?shù)據(jù)被保存在內(nèi)部,直到用戶(hù)要求獲取快照,基于這些保存的數(shù)據(jù)的統(tǒng)計(jì)信息才被顯示出來(lái)。快照包含了應(yīng)用程序在一段時(shí)間內(nèi)的執(zhí)行信息,通常有兩種類(lèi)型的快照:CPU 快照和內(nèi)存快照。

          CPU 快照主要包含了應(yīng)用程序中函數(shù)的調(diào)用關(guān)系及運(yùn)行時(shí)間,這些信息通常可以在 CPU 快照視圖中進(jìn)行查看。

          內(nèi)存快照則主要包含了內(nèi)存的分配和使用情況、載入的所有類(lèi)、存在的對(duì)象信息及對(duì)象間的引用關(guān)系。這些信息通常可以在內(nèi)存快照視圖中進(jìn)行查看。

  • CPU Profiling:CPU Profiling 的主要目的是統(tǒng)計(jì)函數(shù)的調(diào)用情況及執(zhí)行時(shí)間,或者更簡(jiǎn)單的情況就是統(tǒng)計(jì)應(yīng)用程序的 CPU 使用情況。通常有兩種方式來(lái)顯示 CPU Profiling 結(jié)果:CPU 遙測(cè)和 CPU 快照。
  • 內(nèi)存 Profiling:內(nèi)存 Profiling 的主要目的是通過(guò)統(tǒng)計(jì)內(nèi)存使用情況檢測(cè)可能存在的內(nèi)存泄露問(wèn)題及確定優(yōu)化內(nèi)存使用的方向。通常有兩種方式來(lái)顯示內(nèi)存 Profiling 結(jié)果:內(nèi)存遙測(cè)和內(nèi)存快照
  • 線程 Profiling:線程 Profiling 主要用于在多線程應(yīng)用程序中確定內(nèi)存的問(wèn)題所在。一般包括三個(gè)方面的信息:

          某個(gè)線程的狀態(tài)變化情況

          死鎖情況

          某個(gè)線程在線程生命期內(nèi)狀態(tài)的分布情況

  • Profiling 的啟動(dòng)設(shè)置:類(lèi)似于 eclipse 中 Run 和 Debug 的啟動(dòng)設(shè)置,進(jìn)行 Profiling 之前也需要進(jìn)行啟動(dòng)設(shè)置,包括:profiling 的模式(CPU profiling 或內(nèi)存 profiling),信息獲取類(lèi)型(遙測(cè),抽樣統(tǒng)計(jì)或者 BCI )等等。
  • Profiler Preference 設(shè)置:主要用于 Profiler 過(guò)濾器(選擇需要關(guān)注的包、類(lèi))、取樣間隔時(shí)間的設(shè)置等。

Java Profiler 工具介紹

  本文接下來(lái)將對(duì)目前市場(chǎng)上常見(jiàn)的幾種 Java Profiler 工具進(jìn)行介紹。

it知識(shí)庫(kù)常用 Java Profiling 工具的分析與比較,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 91视频播放 | 一级毛片在线播放 | 国内精品久久久久 | 精品啪啪| 欧美一区二区三区,视频 | 日韩高清中文字幕 | 亚洲精品欧美精品 | 久久久91精品国产一区二区三区 | 亚洲综合小视频 | 久久99蜜桃综合影院免费观看 | 日韩第一页| 亚洲精品v日韩精品 | av性色全交蜜桃成熟时 | 国产精品免费大片 | 欧美视频偷拍 | 欧洲亚洲精品久久久久 | 免费av毛片| 影音先锋成人资源 | 精精国产xxxx视频在线播放7 | 日本xx视频免费观看 | 黄网站涩免费蜜桃网站 | 亚洲成人精品 | 毛片网在线观看 | 国产精品99999999 | 欧美亚洲国产日韩 | 久久久成人精品 | 啪啪免费 | 在线精品亚洲欧美日韩国产 | 国产精品人人做人人爽 | 一级片免费视频 | 欧美色性 | 国产精品一区二区av | 亚洲免费在线视频 | 色妹子综合网 | 亚洲免费网 | 日韩免费一区二区 | 中文字幕亚洲区一区二 | 国产成人福利在线观看 | 亚洲天堂一区二区 | 国产一伦一伦一伦 | 日韩中文一区二区三区 |