Optimizeit Profiler概覽

來源:互聯網
上載者:User

Optimizeit Profiler概覽








 


 



本文通過介紹Optimizeit Profiler的一些主要特徵來使你對它有個簡要的瞭解。如果想要知道更多的資訊,請查看Optimizeit Profiler使用者手冊。可以從Optimizeit Profiler單擊主菜單info|help來查看所有的使用文檔。

使用中有何問題,請隨時與Borland Technical Support聯絡。

啟動應用程式







Optimizeit Profiler是通過在一個獨立的虛擬機器上運行應用程式來收集有用的資訊。

在運行一個java程式前,需要安裝一個java虛擬機器。Optimizeit Profiler預設配置是JDK 1.4 or 1.4.1。如果你想使用的另外的虛擬機器,可以查看Optimizeit Profiler使用者手冊中的如何增加額外的虛擬機器部分。

Optimizeit Profiler可用來測試任何類型的java程式:標準的應用程式、應用小程式、servlets、jsp,ejb等。本文所使用的都是示範程式,包含在Optimizeit quichktour目錄下。文中所有的示範均可以此來完成。

1、  開啟Optimizeit Profiler;

2、  如果你是第一次開啟,將會自動彈出編輯設定視窗。如果已經開啟,可以從file菜單下選擇new setting,調出編輯設定視窗。

3、  在程式類型框中選擇Application。

4、  單擊"Program main class or Jar file"右面的“Browse…”按鈕。

5、  找到\doc\profiler\quicktour\QuickTourApp.jar檔案,然後單擊open。

6、  Profiler會返回到設定視窗,並且自動帶入程式的工作區和類路徑。在Source Path框中,單擊change…按鈕。

7、  在Source path chooser視窗中,選擇安裝路徑下的\doc\profiler\quicktour目錄;選中\doc\profiler\quicktour\QuickTourApp.jar檔案後單擊視窗中的向下按鈕把它加入到source path部分。

8、  單擊ok增加到源檔案中路徑中。設定好後的對話方塊如下:





9、  單擊Start now按鈕。

10、             編輯視窗會自動關閉,並且Optimizeit Profiler自動載入案例程式。

使用Memory Profiler







當你是第一次使用該工具,Optimizeit自動開啟到記憶體監看式視窗:









記憶體監視器列出了被測程式中所有的類並且即時統計每個類的執行個體的數目。記憶體監視器預設是以堆模式開啟,這樣能夠看到對象的建立和撤銷。下面的步驟將示範將介紹如何控制記憶體監視器以便於分析被測程式的記憶體使用量情況:







1、  單擊記憶體監視器表頭的instance count。這樣將按照已指派的執行個體數來進行降序排列。







2、  在記憶體監視器視窗下方的Filters視窗中,輸入你想觀察的某個類,在filters框中輸入Java.awt.*,並且按斷行符號鍵;這樣將只顯示java.awt類的相關資訊。







3、  我們可以看到,許多類的執行個體數要麼增加,要麼減少。增加是因為有執行個體產生,而減少是因為記憶體回收在起作用。如果要查看臨時對象的建立,可以選中視窗右側底部的Disable garbage collector按鈕,這樣Optimizeit將一直持續顯示所有執行個體的數目。















4、  選中java.awt.Color類,然後單擊Allocation Backtrace 按鈕進入allocation backtrace 模式。你也可以在類名上雙擊進入。Backtrace資訊顯示了類的每個執行個體中的方法被調用的資訊。







5、  在Allocation Backtrace視圖中,可以以兩種方式來查看資訊:







l         Hierarchical view分層模式 預設顯示樹形圖。在樹形圖中,某個方法可能顯示在多個地方,在於誰調用了這個方法。但是在圖形視圖中,節點表示的方法僅顯示一次。它仍然可以有多個父路徑。







l         In the Aggregated view圖表模式 每個節點將使用線串連起來,或者是到了邊界只有一邊有線。從有多個子節點開始,每條連線對應一個調用這個方法的方法。與樹形不同的是,圖表中可能存在迴圈。圖表顯示有助於進行跟蹤。如果你想找出一條語句是如何被調用的,那麼圖表將是一種快速而簡易的方法,通過圖表你可以迅速地找出有父子關係的對象。







可以使用按鈕 在兩種方式之間切換。







6、  選中EventDispatchThread.run()行,單擊左邊的加號展開。單擊比率最大的節點,直到展開Graphics2d.fill3DRect()行為止。















7、  雙擊Graphics2d.fill3DRect()行,將顯示顏色執行個體分配的原始碼。原始碼將有助於你理解為什麼繪製路徑類產生了如此多的執行個體。fill3DRect方法分配了許多的顏色,是因為它調用了Color.brighter() 方法and Color.darker()方法。







注意:如果你是第一次使用者,你可能沒有圖中的原始碼路徑。







使用記憶體監視器,可以協助你建立更少的臨時對象。雖然臨時對象經常很快便被析構,然而它會導致垃圾收集更加頻繁。對於大多數java虛擬機器來說,當垃圾收集器比較忙時,運行任何的java程式都會延遲幾百毫秒。如果使用了過多的臨時對象,由於這個原因會致使使用者感覺到程式反應緩慢。







記憶體監視器同時有助於理解為什麼垃圾收集器沒有析構這些對象。例如,它將協助我們我們瞭解當一個對象不再被使用時確實被垃圾收集器析構掉。下面的步驟描述了使用記憶體監視器來判斷一個執行個體的產生和如何被垃圾收集器收集。







1、  單擊 表徵圖返回到堆模式。







2、  為了只顯示與Image-related相關的類,可以清除fileters框中的內容,然後輸入*image*,然後按斷行符號鍵。







3、  選中javax.swing.ImageIcon行,然後單擊表徵圖 (顯示執行個體和參考圖),顯示出了執行個體圖:















視窗的上方顯示了執行個體的字元描述。







視窗中間部分顯示了所選執行個體對象參考和由對象所派生的執行個體。在這種情況下,因為ImageIcon對象被引用了,所以垃圾收集器沒有收集。







視窗最下方部分顯示了中間視窗所選執行個體的分配路徑。可以看出執行個體是構造器QuickTourApp分配的。這個映像就是作為背景顯示在程式中間的Optimizeit的logo。







記憶體流失經常是由於在程式運行中連續地引用對象,因此他們仍然佔用資源。正因為如此,如果你能夠定位到使用大量引用的對象,那麼你就能夠定位至對象佔用資源導致記憶體流失的根源。為了能夠定位到使用大量引用的對象,並且跟蹤這些引用:







1、  開啟記憶體流失檢測,單擊記憶體流失監測按鈕 。







2、  為了尋找可能的記憶體流失,Profiler需要比較一系列堆的狀態。可以單擊儲存堆狀態按鈕 來建立。







3、  讓quicktour程式運行15秒以上。







4、  再次單擊儲存堆狀態按鈕記錄一個新的堆狀態記錄。你可以建立多個堆狀態記錄。







5、  From heap state表中為要作為比較的初始狀態,To heap state表中為要與From heap state作比較的狀態。每當選中From heap state表中的記錄後,To heap state表中只能選擇該記錄之後的記錄。







6、  視窗的中間部分顯示了被比較堆狀態記錄之後新引用的資源。Count值是這個對象遞增引用的數量。可以單擊count表頭進行排序。你可以選擇一個引用來查看堆狀態中所有與這個對象引用有關的對象引用。















7、  圖中的對象將有連接線或者邊界。從根節點開始,都有一個相應的引用。把滑鼠移到節點上面,將會顯示新引用的數目和該節點調用toString()的。把滑鼠移到末級節點上,將會顯示這個引用的執行個體變數名。







8、  在圖的上方有兩個捲軸:







使用詳細程度捲軸來調節圖表顯示的詳細程度。







使用縮放捲軸來調節圖表顯示的大小。







所有不同的顏色代表不同的意思:







l         藍色節點為間接引用控制代碼。表示不是直接引用,而是引用的引用。







l         紅色節點為引用控制代碼。表示是直接引用。







l         節點的引用越多,顏色越深。







l         後續串連顯示為綠色線條。後續串連在引用中對於一個對象是更高層次的引用。所有的後續串連的邊框為藍色。在引用層次中前續串連是後續串連的一個引用。







l         當選擇一個節點以後,與這個節點相關的引用將會閃爍顯示。







l         選中一個節點然後單擊滑鼠右鍵,將會在一個新的執行個體中開啟所選擇的節點。







使用CPU Profiler







記憶體監視器有助於對對象的最小化使用。CPU監視器將有助於你瞭解對象所使用的時間。CPU監視器在java虛擬機器中可被看作是一個記錄裝置。下面的步驟描述了如何給出被測試程式的回應時間和CPU使用率。







1、  單擊CPU監視按鈕切換到CPU監視介面。







2、  單擊開始CPU 監視按鈕開始記錄程式的CPU使用率。







3、  讓程式運行一段時間(比如三秒以上)。







4、  單擊停止CPU監視按鈕停止記錄。CPU監視器顯示出了已經記錄的CPU   使用資訊。















5、  如果沒有選上,請選擇樹形格式,看到的資訊是一樣的。







6、  單擊視窗上方的下拉框可以顯示出虛擬機器當前運行所有的線程。















7、  選擇AWT-EventQueue-0 thread線程,該線程被AWT使用來處理時間,例如repaint事件。







8、  展開EventDispatchThread.pumpOneEvent()行。







9、  單擊EventQueue.dispatchEvent()左方的加號展開所有的方法,直到展開到JComponent.paintWithBuffer()方法。行前面的表徵圖所表示的意思為:







 表示該方法直接被另外一個方法調用。







 表示執行時間最長的方法。







在這個例子中AWT-EventQueue-0線程一直用處理repaint事件。







10、              選擇JComponent.paintWithBuffer()行。如果滑鼠移到JComponent.paintWithBuffer()所調用的方法上,將顯示在JComponent.paintWithBuffer()中該方法所使用的時間比例。







11、              如果要分析那個線程是閒置,CPU監視器可以同時顯示CPU使用率和使用時間。單擊inspector(tool菜單下)開啟inspector對話方塊。















12、              不選中Ony record CPU usage,然後關閉視窗。使用這個特徵來選擇緩衝策略,預設顯示的是CPU純使用資訊。







查看虛擬機器資訊







Optimizert提供了即時顯示與資料有關的高標準效能測試的資訊。使用這個特點,你可以瞭解到效能問題是和CPU有關還是和記憶體有關,或者與兩者都有關。







單擊 ,切換到虛擬機器模式。







在這種模式下,顯示四類效能表徵圖,每類圖表描述了虛擬機器不同的活動資訊:















堆圖表:左上方的圖表中紅色線表示被測程式當前需要的堆棧的大小,綠色表示被測程式實際使用的堆棧的大小。







垃圾收集圖表:有上角的圖中顯示當前垃圾收集器的活動,顯示了垃圾收集時間佔總時間的比例。有助於觀察垃圾收集器使用的頻率和時間。







線程圖:左下角的圖中紅色線表示當前啟動並執行線程,綠色表示大多數的線程使用CPU。







類圖:右下角的圖顯示了虛擬機器當前載入的類的數目。







查看測試結果







Optinizeit包含了許多方法來查看測試結果,就象上面的即時監控方法成功一樣,也可以把所有的資訊儲存在一個快照中或報告中,這樣你就可以在以後分析結果或者和另外一個結果進行比較。







例如,你可以把測試結果輸出為一個html檔案。







1、  當示範程式還在運行時,單擊CPU監視器返回到CPU監視介面。







2、  為了查看所有的資訊,完全展開所有的方法。確認你需要的資訊都顯示在層次視圖中,因為輸出中不會包含圖表。







3、  單擊輸出表徵圖 開啟輸出視窗:















4、  填寫標題,檢查filename框中的路徑是有效,並且選擇輸出為.html格式。







5、  單擊ok,Optimizeit會把結果輸出到定義的.html檔案中,然後會自動開啟。















現在你就可以共用你的測試結果了。








 


 



本文只是Optimizeit Profiler的一個概覽。如果想要瞭解更多有關Optimizeit的資訊,請查看Optizeit Profiler使用者指南。








 


 



翻譯:wyingquan@hotmail.com  時間:2004-11-5








 


 




相關文章

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

Starter Package

SSD Cloud server and data transfer for only $2.50 a month

Get Started >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。