欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android使用Profiler查看應(yīng)用內(nèi)存分析的操作步驟

 更新時(shí)間:2023年10月27日 09:27:00   作者:淘淘養(yǎng)樂(lè)多  
內(nèi)存分析是Profiler中的一個(gè)組件,可以幫助我們識(shí)別可能會(huì)導(dǎo)致應(yīng)用卡頓、凍結(jié)甚至崩潰的內(nèi)存泄露和內(nèi)存抖動(dòng),本文小編將給大家介紹一下Android使用Profiler查看應(yīng)用內(nèi)存分析的操作步驟,需要的朋友可以參考下

內(nèi)存分析是Profiler中的一個(gè)組件,

可以顯示應(yīng)用內(nèi)存使用情況實(shí)時(shí)圖表,幫助我們捕獲堆轉(zhuǎn)儲(chǔ)、強(qiáng)制執(zhí)行垃圾回收以及跟蹤內(nèi)存的分配情況。

打開(kāi)內(nèi)存分析步驟:

1、依次點(diǎn)擊View→Tool Window→Profiler

2、從Profiler工具欄中選擇要分析的設(shè)備以及應(yīng)用進(jìn)程。(需要優(yōu)先確保設(shè)備通過(guò)USB正常連接IDE)

3、點(diǎn)擊MEMORY時(shí)間軸上的任意位置可以打開(kāi)內(nèi)存分析。

一、分析應(yīng)用內(nèi)存的目的

當(dāng)應(yīng)用存在不再使用的某些對(duì)象時(shí),垃圾回收器會(huì)將未使用的內(nèi)存釋放。如果應(yīng)用分配內(nèi)存的速度比系統(tǒng)回收的速度快時(shí),回收器要釋放足夠的內(nèi)存來(lái)滿足應(yīng)用的分配需要時(shí),應(yīng)用可能會(huì)產(chǎn)生延遲,從而可能導(dǎo)致應(yīng)用跳幀,使應(yīng)用明顯變慢。

即使應(yīng)用使用過(guò)程中未表現(xiàn)出變慢,但如果存在內(nèi)存泄漏,應(yīng)用掛在后臺(tái)運(yùn)行時(shí),依然會(huì)保留相應(yīng)的內(nèi)存。從而導(dǎo)致系統(tǒng)強(qiáng)制執(zhí)行不必要的垃圾回收時(shí)間,從而拖慢系統(tǒng)其余部分的內(nèi)存性能,最終使系統(tǒng)被迫終止應(yīng)用進(jìn)程以回收內(nèi)存。致使用戶返回應(yīng)用時(shí),必須重啟。影響到用戶體驗(yàn)。

因此可以通過(guò)以下幾種操作從而防止這些問(wèn)題:

1、在時(shí)間軸上查找可能會(huì)導(dǎo)致性能問(wèn)題的不理想內(nèi)存分配進(jìn)行查看;

2、轉(zhuǎn)儲(chǔ)java堆以便查看在任何給定時(shí)間內(nèi)有哪些對(duì)象在占用內(nèi)存。在一個(gè)較長(zhǎng)的時(shí)間段內(nèi)進(jìn)行多次堆轉(zhuǎn)儲(chǔ)有助于分析內(nèi)存泄漏點(diǎn),常用該種方式檢測(cè);

3、記錄正常與極端情況下用戶交互期間的內(nèi)存分配情況。從而準(zhǔn)確識(shí)別代碼中可能存在的短時(shí)間內(nèi)分配過(guò)多對(duì)象而出現(xiàn)泄漏的情況。

二、Profiler概覽

打開(kāi)Profiler后,選擇設(shè)備以及應(yīng)用,則可以看到時(shí)間軸界面,其中包含CPU、MEMORY、ENERGY的情況。其中MEMORY為內(nèi)存分析器、ENERGY為電池分析器;

其中我們主要是用內(nèi)存分析器工具。

當(dāng)中有三項(xiàng)選擇:Capture heap dump:獲取堆轉(zhuǎn)儲(chǔ),該為目前主要檢測(cè)手段,稍后講解;
Record native allocations:獲取設(shè)備上錄制原生分配情況;
Record Java/Kotlin allocations:獲取錄制Java和Kotlin分配情況;

三、查看內(nèi)存分配情況

1、內(nèi)存分配情況表可以顯示內(nèi)存中每個(gè)java對(duì)象和JNI引用的分配方式。因此,內(nèi)存分析器可以顯示有關(guān)對(duì)象分配情況信息如下:

--分配了哪些類(lèi)型的對(duì)象以及他們使用了多少空間;

--每個(gè)分配堆棧的軌跡,包括在哪些線程中;

--對(duì)象何時(shí)被取消分配等;

如果需要中Android 10以及更高版本的設(shè)備上錄制原生分配情況,需要選擇Record native allocations,然后點(diǎn)擊Record,錄制會(huì)持續(xù)到點(diǎn)擊Stop為止,之后內(nèi)存分析界面會(huì)轉(zhuǎn)換到顯示原生錄制的屏幕中。

注意:低于android10,record native allocations選項(xiàng)不可使用。

如果需要錄制java和kotlin分配情況,請(qǐng)選擇record java/kotlin allocations,然后選擇record。如果設(shè)備搭載的是android8+,則內(nèi)存分析將可以轉(zhuǎn)換顯示就行錄制的界面,可以按緊選中某一塊區(qū)域進(jìn)行查看。

四、捕獲堆轉(zhuǎn)儲(chǔ)

堆轉(zhuǎn)儲(chǔ)顯示捕獲堆轉(zhuǎn)儲(chǔ)時(shí)應(yīng)用中對(duì)象正在使用的內(nèi)存,尤其是在長(zhǎng)時(shí)間的操作中,堆轉(zhuǎn)儲(chǔ)會(huì)顯示認(rèn)為不應(yīng)該再存在的內(nèi)存對(duì)象,從而幫助識(shí)別內(nèi)存泄漏。
如果需要捕獲堆轉(zhuǎn)儲(chǔ),需要選擇capture heap dump,然后選擇record。一段時(shí)間后,就會(huì)生成heap dump,可進(jìn)行查看,也可以通過(guò)第三方工具M(jìn)emory Analyzer進(jìn)行查看。

由于新版IDE剔除了Memory Analyzer工具,因此,目前查看需要通過(guò)eclipse中的插件工具memory analyzer進(jìn)行查看??赏ㄟ^(guò)工具下載進(jìn)行試驗(yàn):[http://www.eclipse.org/mat/downloads.php]
通過(guò)工具打開(kāi)phrof文件,進(jìn)入主界面

點(diǎn)擊leak suspects可查看疑似內(nèi)存泄漏的地方,點(diǎn)擊detail可以查看分析出ArryList存放對(duì)象Person出了問(wèn)題。

也可以在overview中點(diǎn)擊dominator_tree查看堆占比,可以看出一個(gè)線程占比過(guò)高,集合中對(duì)象的數(shù)量過(guò)多等。

以上就是Android使用Profiler查看應(yīng)用內(nèi)存分析的操作步驟的詳細(xì)內(nèi)容,更多關(guān)于Android Profiler查看應(yīng)用內(nèi)存分析的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論