电竞比分网-中国电竞赛事及体育赛事平台

分享

內(nèi)存及cpu占用測試方法小結(jié)

 知識VS人生 2017-06-27
2014-11-09 20:10 2223人閱讀 評論(0) 收藏 舉報(bào)
 分類:

目錄(?)[+]

  • micro cpu monitor

功能——Cpu 實(shí)時監(jiān)控工具,可運(yùn)行在模擬器、真機(jī)上。

優(yōu)點(diǎn):實(shí)時、可與應(yīng)用程序同時在前臺展現(xiàn)

 可在屏幕底部查看,僅占一個像素,application前臺運(yùn)行,Rd或者qa可以在調(diào)試、測試過程中實(shí)時看到設(shè)備cpu占用率,更容易定位問題所在,可配合自動化工具使用。

  •  MemoryTest

 功能:內(nèi)存監(jiān)控

實(shí)時監(jiān)控+數(shù)據(jù)存儲

優(yōu)點(diǎn):實(shí)時,曲線圖

實(shí)時展現(xiàn)applition內(nèi)存占用,并將數(shù)據(jù)以excel形式備份。

可配合monkey或者自動化工具使用。

缺點(diǎn):數(shù)據(jù)存儲格式不利于展現(xiàn)。 

  • DDMS+MAT

DDMS——內(nèi)存泄露檢測

功能:內(nèi)存檢測工具。使用DDMS的Heap視圖工具可以很方便的確認(rèn)我們的程序是否存在內(nèi)存泄漏的可能性

啟動DDMS

1、啟動eclipse后,切換到DDMS透視圖,并確認(rèn)Devices視圖、Heap視圖都是打開的;

2、點(diǎn)擊選中想要監(jiān)測的進(jìn)程——>選中視圖頁面上方的"update heap"圖標(biāo) 

3、點(diǎn)擊Heap視圖中的“Cause GC”按鈕。此時在Heap視圖中就會看到當(dāng)前選中的進(jìn)程的內(nèi)存使用量的詳細(xì)情況 

如何判斷內(nèi)存泄露?

   點(diǎn)擊“start gc”后無需重復(fù)點(diǎn)擊刷新,heap視圖會定時刷新。

   Heap視圖中部有一個Type叫做data object,即數(shù)據(jù)對象,也就是我們的程序中大量存在的類類型的對象。在data object一行中有一列是“Total Size”,其值就是當(dāng)前進(jìn)程中所有Java數(shù)據(jù)對象的內(nèi)存總量,一般情況下,這個值的大小決定了是否會有內(nèi)存泄漏。可以這樣判斷:

a) 不斷的操作當(dāng)前應(yīng)用,同時注意觀察data object的Total Size值;

b) 正常情況下Total Size值都會穩(wěn)定在一個有限的范圍內(nèi),也就是說由于程序中的的代碼良好,沒有造成對象不被垃圾回收的情況,所以說雖然我們不斷的操作會不斷的生成很多對象,而在虛擬機(jī)不斷的進(jìn)行GC的過程中,這些對象都被回收了,內(nèi)存占用量會會落到一個穩(wěn)定的水平;

c) 反之如果代碼中存在沒有釋放對象引用的情況,則data object的Total Size值在每次GC后不會有明顯的回落,隨著操作次數(shù)的增多Total Size的值會越來越大 

注意:ddms只可以初步判斷可能存在內(nèi)存泄露,哪里存在內(nèi)存泄露是無從分析的,只能借助下面工具——MAT. 

  • MAT——定位內(nèi)存泄露

Mat是一個eclipse plugin(http://download./mat/1.1/update-site/),也有單獨(dú)的rcp客戶端。以下示例環(huán)境——mat plugin+eclipse

啟動MAT,加載生成的hprof文件。即點(diǎn)擊DDMS工具條上面的Dump hprof文件 

展示類實(shí)例的直方圖(未釋放的類實(shí)例)及說明(為什么沒有釋放)

overview中中查看domintor tree,查看未釋放、可排序的、占用內(nèi)存最大的一些對象列表。 

選中列表展開比較大的對象,右鍵List Objects > with incoming references。它會生成一個heap上的所有byte數(shù)組的列表,在列表里,我們可以按照Shallow Heap的使用情況來排序;

右鍵path to GC Roots>exclude weak/soft  references,它將展示從根到這個對象的路徑--就是一條保證對象有效的鏈條。

根據(jù)以上路徑定位內(nèi)存泄露的位置。 

補(bǔ)充:

Shallow size就是對象本身占用內(nèi)存的大小,不包含對其他對象的引用,也就是對象頭加成員變量(不是成員變量的值)的總和 

retained size:該對象本身的shallow size加上它直接引用或者間接引用的對象的shallow size,即該對象被gc回收,所能回收的內(nèi)存總和。 

AndroidPermanceTest+Monkey 

http://wiki.babel.baidu.com/twiki/bin/view/Com/Test/Android%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95%E5%B7%A5%E5%85%B7 

結(jié)語

以上工具均可配合monkey、自動化用例使用。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多