記憶體監控相關工具
Scout是一款針對用以監控記憶體狀態的程式,它不但可以監控電腦上面的swf的記憶體狀況,也可以監看使用air開發,運行在手機上的app的記憶體和gpu使用狀況。
在Scout之前,了解swf的記憶體使用狀況有幾個方式
- 內建的Profile功能
Profile可以監控現有的FLASH裡每一個CLASS占的記憶體比例,預設的設定會忽略AS內建的類別。如果要打開的話,可以選擇選單列裡的Window=>Preferences=>Flash Builder=>Profiler=>Exclusion Filter或是Inclusion Filters去排除或增加要觀察的class種類。
這個工具若是用按的方式執行,則只能針對FLEX本身的專案來做觀察。如果專案架構是外部的SWF檔案,則可以先切換到Profile工作模式(如圖:),然後選擇上方選單列的Profile=>Profile External Application=>New,去選擇要觀察的SWF檔案。
有關這個工具的介紹請見: Flex記憶體監控程式-Profile - windows的工作管理員
監控執行緒的執行狀況,缺點是無法仔細的了解是那一個Class造成memory leak。 - Hi-ReS-Stats (https://github.com/mrdoob/Hi-ReS-Stats)
很常被見到的一個外掛程式碼,可以簡單的使用addChild( new Stats() );
- Scout (http://gaming.adobe.com/technologies/scout/)
最後就是今天要介紹的Adobe Scout工具,Adobe開發這個,主要是為了當開發者在使用Adobe AIR開發手機APP時,能夠更精準的掌握SWF運行的狀況以及GPU的狀況。因此Adobe官方便提供了這一項免費工具,讓APP開發者可以更仔細的監控效能的狀況。
Scout的優點
上面介紹了這麼多的工具,那麼Scout的優勢為何呢?
- 仔細(Details)
Scout可以提供詳細、階層性的資訊,讓開發者一目了然自己的程式的GPU資訊及記憶體使用狀況。
除了Profile的記憶體監控功能外,Scout還可以提供GPU運算的相關數字及報表。
在上面所列的其他三項工具,只有Hi-ReS-Stats有顯示FPS,可以讓開發者了解FPS速度是否正常,可觀察何時影格速度會變慢,並檢查是否有什麼動畫讓畫面停住了。其餘的都只能單純的監控程式使用的記憶體狀況,而無法了解到動畫處理的記憶體使用狀況。
在flash裡,動畫的運算、圖形處理等,在很多時候其實是造成畫面Lag的主要元兇,因此,或許很多時後我們會發現動畫不知為何播放速度變慢了,但是觀察Profile,記憶體的使用狀況卻很正常,這時很可能便是GPU Memory不足。
有關要如何做才能提高動畫的效能,相關議題可以參考下面這篇文章:
http://claire-chang.com/1063-提升Flash效能的幾個注意事項 - 可擴展性(Extensible)
Adobe有提供相關的API,當原本Scout提供的資訊無法滿足需求時,開發者可以在ActionScript裡面寫程式,去自行丟出想觀察的額外資訊,並且只要幾行程式碼就可以做到。(請參見Telemetry類別) - 跨平台(Cross-platform)
可在Mac及Windows上運行,並能讓開發者開發Andriod及iOS APP時更容易觀察其效能狀況。 - 輕量化(Lightweight)
Scout只有12MB,很輕並且運行的很快,並且可以運行於一般的Flash Player,不用使用Debug版本也可以。
開始使用Scout
- 開啟SWFs的telemetry功能:將Enable detailed telemetry選項勾起來
PS: 此時大家可能會發現,咦~不對呀!我的Flex專案怎麼沒這個選項?
是的,這個功能只有在AIR專案上才會有,非AIR專案是沒有這個選項的。
所以,那一般Flash檔案要如何使用Scout呢?
這時後就需要透過工具去開啟swf的Telemetry功能,詳細方法請見下面的文章:
Enable Advanced Telemetry on Flex or old SWFs with SWF Scout Enabler
簡單來說,便是下載SWF Scout Enabler,然後選取要觀察的SWF檔案,把它的Telemetry打開。 - 執行Scout,要觀察一個swf,可觀察遠端或在本機的檔案。是用Scout去監控運作在其他台電腦或是手機上的APP上的資訊會需要較多的設定。
要執行Scout的電腦需要有- Flash Player 11.4 (plugin or standalone) or Adobe AIR 3.4.
- The Adobe Scout desktop application.
[觀察目標]
(一) 本機檔案
只要將Scout打開,就可以看到現在在電腦中正在運行的SWF檔案的相關資訊了。
(二) 其他台電腦上檔案
如果要去觀察在其他台電腦上運作的SWF檔案的效能狀況,可以經由.telemetry.cfg檔案的設定去做到(但需要同網域)。
檔案位置如下:- MacOS: ~/.telemetry.cfg
- Windows: %HOMEDRIVE%%HOMEPATH%\.telemetry.cfg
在修改之後,.telemetry.cfg可能會長的像這樣
TelemetryAddress=192.168.1.20:7934
SamplerEnabled = true
CPUCapture = true
DisplayObjectCapture = false
Stage3DCapture = false
(三) 手機或移動裝置上的APP- 確定手機與執行Scout的電腦在弄一個WIFI網路下
- 手機下載Adobe Scout檔案(iPhone在此下載、Android在此下載)
- 打開手機上的Scout應用程式,這時他會搜尋同WIFI下的電腦,選擇我們執行Scout的電腦,然後按連線
- 到電腦裡選擇自己想看到的數據資料
- 運行有開啟Telemetry的手機APP應用程式
先介紹到這邊,下一篇會再介紹該如何去使用或設定Scout的相關功能。
參考資料: