天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

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

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

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

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

Profiler 工具功能簡介

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

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

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

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

          Threads Telemetry視圖一般用于顯示當前運行線程的個數(shù)、守護進程的個數(shù)等信息。

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

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

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

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

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

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

          死鎖情況

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

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

Java Profiler 工具介紹

  本文接下來將對目前市場上常見的幾種 Java Profiler 工具進行介紹。

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

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

主站蜘蛛池模板: 日本三区四区免费高清不卡 | 国产精亚洲视频综合区 | 国产午夜永久福利视频在线观看 | 国产AV天堂亚洲AV麻豆 | 午夜影视不用充钱的免费 | 国产激情视频在线播放 | 青柠在线观看免费完整版 | 老司机亚洲精品影院在线观看 | 伦理片午夜在线视频 | 无码专区无码专区视频网网址 | 欧美成人猛片aaaaaaa | 两个吃奶一个添下面视频 | 天堂Av亚洲欧美日韩国产综合 | 国产精品99re6热在线播放 | 夜色帮首页 | 亚洲人成伊人成综合网久久久 | 精品蜜臀AV在线天堂 | 俄罗斯xxxxxbbbbb| 久久精品热99看二 | 一本色道久久综合亚洲精品 | 龙广在线收听 | 人人射人人插 | 99精品久久精品一区二区 | 美女撒尿无遮挡免费中国 | 亚洲精品无码午夜福利在线观看 | 国产av免费观看日本 | 掀开奶罩边躁狠狠躁软学生 | 解开白丝老师的短裙猛烈进入 | 男女疯狂一边摸一边做羞羞视频 | 饥渴的40岁熟妇完整版在线 | 日韩一本道无码v | 国产精品一区二区亚瑟不卡 | 55夜色66夜亚洲精品播放 | 国产亚洲日韩在线播放不卡 | 欧美hdxxxx | 国产精品高清视亚洲一区二区 | 暖暖视频在线高清播放 | 国产一区二区三区在线看片 | 日本亚洲精品色婷婷在线影院 | 岛国大片在线观看免费版 | 亚色九九九全国免费视频 |