四徐块、Android性能優(yōu)化之性能優(yōu)化工具

性能優(yōu)化的幫助工具:
MAT,
Memory Monitor(屬于AndroidMonitor中一個模塊)怜械,
HeapTool(查看堆信息),
Allaction Tracking弄抬,
LeakCanary
Lint工具

1.Allaction Tracking

(1)追蹤


Allaction Tracking

在內存圖中點擊途中箭頭的部分茎辐,啟動追蹤,再次點擊就是停止追蹤掂恕,隨后自動生成一個alloc結尾的文件拖陆,這個文件就記錄了這次追蹤到的所有數(shù)據(jù),然后會在右上角打開一個窗口竹海。展示和第一種方式有點區(qū)別慕蔚,各有所長,他有兩種展現(xiàn)方式。

(2)分類我們的內存分配


生成的alloc文件

紅框中

Group by Method:用方法來分類我們的內存分配斋配,默認會以Group by Method來組織
Group by Allocator:用內存分配器來分類我們的內存分配

我們用 Group by Allocator的方式來查看一下孔飒。

可以看到我們自己包中灌闺,每一個類的內存分配次數(shù)和分配的大小。如果我們想看內存分配的實際在源碼中發(fā)生的地方坏瞄,可以選擇需要跳轉的對象桂对,點擊該按鈕就能發(fā)現(xiàn)我們的源碼。

(3)查看統(tǒng)計圖

想看某個圖層詳細內存分配鸠匀,則雙擊速表左鍵進入下一圖層


內存分配情況

通過[Layout方式查看更直觀

Layout方式

特別感謝
LooperJing

2.LeakCanary
(1)配置

Getting started

In your build.gradle:

 dependencies {
   debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5.2'
   releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.2'
 }
In your Application class:

public class ExampleApplication extends Application {

  @Override public void onCreate() {
    super.onCreate();
    if (LeakCanary.isInAnalyzerProcess(this)) {
      // This process is dedicated to LeakCanary for heap analysis.
      // You should not init your app in this process.
      return;
    }
    LeakCanary.install(this);
    // Normal app init code...
  }
}

(2)制造一個單例內存泄漏的點

public class CommonUtils {

    private static CommonUtils instance;

    private Context context;

    private CommonUtils(Context context) {
        this.context = context;
    }

    public static CommonUtils getInstance(Context context) {

        if (instance == null) {
            instance = new CommonUtils(context);
        }
        return instance;
    }
}
 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        CommonUtils commonUtils = CommonUtils.getInstance(this);

    }

(3)LeakCanary 發(fā)出內存泄漏通知



(4)LeakCanary 分析
LeakCanary 本質上還是用命令控制生成hprof文件分析檢查內存泄漏蕉斜。

3.Lint分析工具

Android Studio很方便,很好用缀棍,你可以試試點擊AS菜單欄上面的Analyze選項宅此,然后點擊Inspection Scope,然后選擇你需要檢測的范圍(比如整個項目)爬范,然后AS會自動彈出下圖所示的面板


lint分析展示面板
可能出現(xiàn)內存泄漏的類
檢測資源文件是否有沒有用到的資源父腕。
檢測常見內存泄露
安全問題SDK版本安全問題
是否有費的代碼沒有用到
代碼的規(guī)范---甚至駝峰命名法也會檢測
自動生成的羅列出來
沒用的導包
可能的bug
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市青瀑,隨后出現(xiàn)的幾起案子璧亮,更是在濱河造成了極大的恐慌,老刑警劉巖斥难,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件枝嘶,死亡現(xiàn)場離奇詭異,居然都是意外死亡哑诊,警方通過查閱死者的電腦和手機群扶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來搭儒,“玉大人穷当,你說我怎么就攤上這事⊙秃蹋” “怎么了馁菜?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長铃岔。 經(jīng)常有香客問我汪疮,道長,這世上最難降的妖魔是什么毁习? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任智嚷,我火速辦了婚禮,結果婚禮上纺且,老公的妹妹穿的比我還像新娘盏道。我一直安慰自己,他們只是感情好载碌,可當我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布猜嘱。 她就那樣靜靜地躺著衅枫,像睡著了一般。 火紅的嫁衣襯著肌膚如雪朗伶。 梳的紋絲不亂的頭發(fā)上弦撩,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天,我揣著相機與錄音论皆,去河邊找鬼益楼。 笑死,一個胖子當著我的面吹牛点晴,可吹牛的內容都是我干的感凤。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼觉鼻,長吁一口氣:“原來是場噩夢啊……” “哼俊扭!你這毒婦竟也來了?” 一聲冷哼從身側響起坠陈,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎捐康,沒想到半個月后仇矾,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡解总,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年贮匕,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片花枫。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡刻盐,死狀恐怖,靈堂內的尸體忽然破棺而出劳翰,到底是詐尸還是另有隱情敦锌,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布佳簸,位于F島的核電站乙墙,受9級特大地震影響,放射性物質發(fā)生泄漏生均。R本人自食惡果不足惜听想,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望马胧。 院中可真熱鬧汉买,春花似錦、人聲如沸佩脊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至组题,卻和暖如春葫男,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背崔列。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工梢褐, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人赵讯。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓盈咳,卻偏偏與公主長得像,于是被迫代替她去往敵國和親边翼。 傳聞我的和親對象是個殘疾皇子鱼响,可洞房花燭夜當晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內容