Flutter性能監控工具(1)--- Observatory簡介 主要講了如何打開Observatory,如今講一下如何使用Observatory裏的各個功能來分析性能問題,html
下圖是Observatory的主頁面:git
表示當前所在的位置github
vm@ws://127.0.0.1:50579/ws :表示當前鏈接的VMbash
鼠標放在這個上面,會看到這個,表示當前APP的main():函數
這裏顯示當前VM的信息工具
這裏是顯示APP裏的Isolates,每一個APP都有一個root Isolates。post
Isolates是用一個餅圖顯示,這個餅圖有不少組成部分,咱們把這些叫作tags,這些tags用來表明在VM裏不一樣的執行列表,包括User TAG 和 VM TAG:性能
User TAG學習
用戶自定義的TAG,使用方式以下:測試
import 'dart:developer';
var customTag = new UserTag('MyTag');
// Save the previous tag when installing the custom tag.
var previousTag = customTag.makeCurrent();
// your code here
// Restore the previous tag.
previousTag.makeCurrent();
複製代碼
VM TAG
VM TAG是系統定義的,在整個UI中使用,有:
圖像的右邊還有一系列連接,表明着不一樣的功能。
能夠設置斷點並調試您的應用程序。
複製代碼
如何設置debugger,看 dart-lang.github.io/observatory…
顯示應用程序的類層次結構。
複製代碼
顯示當前isolate的CPU使用數據
複製代碼
圖表的下部按cpu佔用比例作了一個列表,反映的是函數的調用次數和執行時間(劃重點)。通常排在前面的函數(這些函數是?有待學習)都不是咱們寫的dart代碼。若是你發現本身的某個函數調用佔比反常,那麼可能存在問題。
具體使用的地址:dart-lang.github.io/observatory…
和cpu profile同樣,可是是以表格的形式來展現
複製代碼
顯示isolate已分配的內存。經過這個面板你能看到新生代/老生代的內存大小和佔比;每一個類型所佔用的內存大小。
複製代碼
New generation: 新建立的對象,通常來講對象比較小,生命週期短,如local 變量。在這裏GC活動頻繁 Old generation:從GC中存活下來的New generation將會提拔到老生代Old generation,它比新生代空間大,更適合大的對象和生命週期長的對象
經過這個面板你能看到新生代/老生代的內存大小和佔比;每一個類型所佔用的內存大小。 爲了debug的方便,咱們能夠獲取到某段時間的內存分配狀況:點擊Reset Accumulator按鈕,把數據清零,執行一下要測試的程序,點擊刷新。 爲了檢查內存泄露,咱們能夠點擊GC按鈕,手動執行GC。 Accumulator Size:自點擊Reset Accumulator以來,累加對象佔用內存大小 Accumulator Instances:自點擊Reset Accumulator以來,累加實例個數 Current Size:當前對象佔用內存大小 Current Instances:當前對象數量
具體使用的地址:dart-lang.github.io/observatory…
堆快照
複製代碼
將分配的內存顯示爲顏色塊
複製代碼
heap map 面板能查看old generation中的內存狀態 它以顏色顯示內存塊。 每一個內存頁面(page of memory)爲256 KB,每頁由水平黑線分隔。 像素的顏色表示對象的類ID - 例如,藍色表示字符串,綠色表示雙精度表。 可用空間爲白色,指令(代碼)爲紫色。 若是啓動垃圾收集(使用「分配配置文件」屏幕中的GC按鈕),堆映射中將顯示更多空白區域(可用空間)。 將光標懸停在上面時,頂部的狀態欄顯示有關光標下像素所表明的對象的信息。 顯示的信息包括該對象的類型,大小和地址。 當你看到白色區域中有不少分散的其它顏色,說明存在內存碎片化,多是內存泄露致使的。
具體使用看:dart-lang.github.io/observatory…
包含您應用中收集的指標。
複製代碼
查看強對象和若對象
複製代碼
端口
複製代碼
設置Log的級別
複製代碼