3C科技 娛樂遊戲 美食旅遊 時尚美妝 親子育兒 生活休閒 金融理財 健康運動 寰宇綜合

Zi 字媒體

2017-07-25T20:27:27+00:00
加入好友
在智能手機App競爭越來越激烈的今天,Android App各項性能如CPU、內存消耗等都是我們在開發測試中需要關注的指標,如何將App打造得更加「優雅」是我們需要不斷追求探索的方向,下面我們從內存和流暢度兩個緯度來說說如何對Android App進行評測和調優。一、內存內存不是無限使用的,如果內存過大或泄漏會出現OOM(Out Of Memory)、UI不流暢等問題,因此內存也是一個稀缺資源,我們應該保證沒有內存泄漏且對不需要使用的內存及時釋放。一般內存測試或分析內存問題可以分為下面幾步:編譯代碼選定測試場景(來自於經驗&開發)測試場景轉換成用例跑起工具Run用例結合代碼,分析,分析…1. 內存測試通用的方法測試分析內存有以下幾種方法:DDMS(Heap&Allocation Tracker)Heap查看堆的分配情況:主要關注兩項數據:1)Heap Size堆的大小,當資源增加,當前堆的空餘空間不夠時,系統會增加堆的大小。2)Allocated堆中已分配的大小,這是應用程序實際佔用的內存大小,資源回收后,此項數據會變小。註:如果進行反覆操作,或堆的大小一直增加,則有內存泄漏的隱患。Allocation Tracker跟蹤內存分配情況:MAT(Memory Analyzer)Leak Suspects:內存泄露報告Top Components:吃貨報告Histogram:每個Class佔用內存Dominator Tree:列出哪些對象佔用內存最多以及誰hold住這些對象2. Android常見的內存問題Android常見的內存問題有:萬惡的Static通常見到在單例模式下面就是一個例子,static變數佔用過大的內存比例(7.1M),這裡碰到該情況需要具體分析裡面數據是否都是需要常駐的,不要把很多不相干的變數設為static屬性。多線程生命周期過長hold住本該釋放資源這裡需要自己搜索代碼查看是哪裡一直hold住了資源導致沒有釋放。大胖子Bitmap圖上可以看到Bitmap佔用內存很大(5.7M),利用MAT來找到他的outgoing和incoming引用:可以找到這塊內存的引用關係,然後找代碼。在遇到圖片資源佔用過大的情況,建議:1)及時的銷毀;2)設置一定的採樣率;3)巧妙的運用軟引用(SoftRefrence)。CursorCursor用完記得關掉,如果實在不確定Cursor是否關閉,可以在onDestroy中關了。總的來說,沒有嚴格意義上泄露只是你hold太久。

本文由yidianzixun提供 原文連結

寫了 5860316篇文章,獲得 23313次喜歡
精彩推薦