国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

AS 也能檢測 Activity 內存泄露 | 吊打 OOM

企業動態
OOM(Out of Memory)是 Android 開發繞不過去的坎,一定會遇到。但是很多時候,報錯的地方都并不是發生問題的原因,只是壓死駱駝的最后一根稻草。

[[199971]]

 序

OOM(Out of Memory)是 Android 開發繞不過去的坎,一定會遇到。但是很多時候,報錯的地方都并不是發生問題的原因,只是壓死駱駝的***一根稻草。

解決 OOM ,涉及到的東西太多了,從原理、分析工具、解決辦法很多個方向,所以準備做一個專門解決 OOM 需要用到的知識,集合成一個系列來發布。

就叫它《吊打 OOM》吧,準備慢慢寫好好寫,希望完結之后,不懼 OOM。

一、前言

OOM(Out of Memory) 大部分原因來自內存泄露,如果有內存泄露導致系統 GC 無法將無用資源回收,就可能導致下次申請內存空間的時候,出現 OOM 的錯誤。

其實 Android Studio(以下簡稱 AS)已經自帶了一些內存泄露的檢查。但是它的功能有限,暫時只能對 Activity 發生的內存泄露進行檢查。

下面來了解如何使用 AS 分析 Activity 的內存泄露。

二、Android Monitor

一般用來做內存泄露的檢測,會推薦使用 LeakCannary ,它是 Square 提供的一個檢測內存泄露的開源庫,集成也非常的簡單。

有興趣的可以去 Github 上看它的文檔集成使用。

https://github.com/square/leakcanary

不過大多數情況下,我們可能不會去使用 LeakCanary ,畢竟它還是需要集成在項目中。而如果只是為了檢測一下是否有 Activity 的內存泄露情況,其實 AS 中已經提供了檢測的工具。

AS 本身也為我們提供了非常方便的 Android Monitor 工具,來幫我們監聽當前 Debug 情況下,App 運行的情況,其中就包括 Memory 的監控。

Memory 窗口可以完全監聽當前正在 Debug 的 App 的內存使用情況。如果在正常操作的時候,看到此處的內存一直在飆高,卻沒有降低的跡象,你的 App 就可能存在內存泄露的問題。

先來簡單介紹一下 Memory 面板,如圖中標記的區域。

1、當前監控的終端設備和進程。

2、被檢測的設備的內存分配情況。

Allocated:已經被使用的空間。

Free : 當前剩余的空間。

3、Memroy 分析的工具欄,包含一些內存分析相關的操作。

分析內存的工具欄,從左到右依次的作用是:

  1. Enable:終止檢測。
  2. Initiate GC :手動觸發 GC。
  3. Jump java heap:獲取 hprof 分析文件。
  4. Start Allocation Tracking: 開始分配追蹤。
  5. Memory monitor help:查看幫助文檔。

特別提一下,內存分配情況只是標識當前的內存使用情況,如果還需要繼續使用內存,是可以繼續申請的,直到超過了 Dalvik Heap 分配的***內存數,就會觸發 OOM。

今天介紹的方法,主要會使用到『獲取 hprof 分析文件的方法』,去獲取一個 hprof 文件進行分析,AS 使用這種方式生成的 hprof 文件,并非標準的 hprof 文件,是專門為 AS 分析使用的,所以如果想要交給 MAT 進行分析,還需要使用 hprof-conv 命令進行轉換一下。這不是本文的重點,本文介紹的方式只需要使用 AS 進行分析即可。

點擊『Jump java heap』按鈕之后,會自動生成當前設備當前進行的內存使用報告,我們就在此基礎上進行分析。

生成的時間完全視情況而定,可能受當前使用的內存大小和當前使用的設備配置決定。最終會生成一個 .hprof 的文件,文件的命名摻雜了包名和日期時間,能幫我們很好的區分它們。

生成的 .hprof 文件,會自動將其保存在項目的 captures 目錄下,同時也可以使用Captures 窗口查看。

在 hprof 的文件分析窗口中,右邊會有一個 Analyzer Tasks 子窗口,它就是本文的主角,用來分析 Activity 內存泄露的。

默認情況如上圖,點擊右上角的『Perform Analysis』按鈕,即可開始分析。

它主要是用來檢測泄露的 Activity 和 重復的 Strings 字符串。重復的 String 檢測,基本上處于無用的狀態,沒什么實際用處,新建一個 App ,運行起來,它就是會有很多重復的 String ,占用的空間也不大,基本上也無需我們太過關心。

點擊『Perform Analysis』按鈕,開始嘗試檢測。

這里主要是使用 Detect Leaked Activitys 的功能,但是我們這是一個空項目,所以也沒有什么關于 Activity 內存泄露的問題。

三、Detect Leaked Activitys

既然沒有內存泄露的情況,那我們就手動的造一個 Activity 的內存泄露的情況。

我們知道,對于 Activity 而言,如果有內部類,可能會引發內存泄露,下面就是這樣一個會引發內存泄露的的例子。

上面創建了一個內部類,并且在 Activity 中,使用一個 static 的 變量去持有它,它不會在 Activity onFinish() 的時候被回收掉,而是一直處于內存中,就會引發內存泄露。

現在,我們打開 ChildActivity 然后關閉它,點擊 『Jump Java Heap』按鈕生成內存的 hprof 文件。

再繼續使用『Perform Analysis』進行 Activitys 的泄露檢測。

可以看到,這里已經能檢測出來 ChildActivity 存在內存泄露的問題了。

再進行點擊可以查看到更信息的情況,來看個完整的效果。

在 Referebce Tree 中,就可以清晰的看到,是 MemoryLeak 對象,造成的內存泄露。

檢測到 Activity 的內存泄露問題,我們只需要修復它就可以了。一些常規的編碼習慣(Activity 中的內部類,推薦 static 化),確實是可以避免掉這些問題。

【本文為51CTO專欄作者“張旸”的原創稿件,轉載請通過微信公眾號聯系作者獲取授權】

戳這里,看該作者更多好文

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2017-08-25 14:46:43

OOMBitmap內存

2023-10-10 15:26:30

內存泄露OOM

2010-09-25 11:32:24

Java內存泄漏

2016-09-12 16:01:28

Android內存泄露內存管理

2023-01-26 23:46:15

2017-12-11 11:00:27

內存泄露判斷

2011-08-21 09:07:10

2009-01-18 09:19:00

DHCPVlANIP

2017-05-04 16:07:11

Tomcat內存泄露

2013-08-07 10:07:07

Handler內存泄露

2022-10-10 11:37:14

Gomap內存

2010-08-10 10:00:57

Flex內存

2011-07-20 17:04:43

Objective-C 內存 內存泄露

2021-11-11 11:31:54

擺動序列數字

2010-06-02 13:00:43

Linux 內存監控

2012-12-13 09:58:24

隱私泄露禁止追蹤

2012-08-31 16:58:37

2017-10-26 08:43:18

JavaScript內存處理

2022-08-26 07:33:49

內存JVMEntry

2013-12-23 09:25:21

點贊
收藏

51CTO技術棧公眾號

综合久久国产| 久久国产精品视频| 久久视频这里有精品| 欧美日韩精选| 欧美视频一二三| www.日本三级| 爽好久久久欧美精品| 国产精品18久久久久久麻辣| xxx在线免费观看| 成人免费视频一区二区| 欧美激情第六页| 亚洲3区在线| 久久亚洲精品成人| 欧美成人免费全部网站| 欧美三级韩国三级日本三斤| 成人精品视频一区二区| a美女胸又www黄视频久久| 久久综合给合久久狠狠色| 亚洲综合婷婷| 国产精品久久av| 天堂网在线观看国产精品| 久久久久久网址| 免费成人蒂法| 97热精品视频官网| 日韩欧美国产二区| 久久久久蜜桃| 91中文字幕一区| 亚洲欧洲高清| 日韩中文字幕精品视频| 精品123区| 在线播放国产精品| 国产精品视频3p| 欧美成人性色生活仑片| 日韩成人一区| 欧美一级视频一区二区| 国内久久视频| 精品国产一区二区三区免费| 免费黄网站欧美| 国产自产在线视频| 亚洲最大的成人av| 欧美尤物美女在线| 亚洲精品美女在线| 日韩精品亚洲专区在线观看| 日韩美女写真福利在线观看| 桃子视频成人app| 97视频国产在线| 日韩亚洲精品在线| 欧美一区二区福利| 国产亚洲精品福利| 中文字幕第5页| 中文字幕乱码亚洲精品一区| 超碰在线94| 亚洲国产又黄又爽女人高潮的| 成人搞黄视频| av日韩免费电影| 国产精品国产三级国产aⅴ无密码| 欧美色视频免费| 日韩高清av一区二区三区| 91精品秘密在线观看| 欧美日韩亚洲一| 欧美激情在线看| 免费成人黄色| 在线色欧美三级视频| 欧美三级黄美女| 色噜噜狠狠狠综合曰曰曰88av | 亚洲欧洲成人| 一本色道久久88综合日韩精品| 国户精品久久久久久久久久久不卡| 激情深爱综合网| 国产一区二区三区欧美| 国产毛片一区| 日本调教视频在线观看| 日韩视频精品在线| 国产宾馆实践打屁股91| 国产盗摄——sm在线视频| 九九热99久久久国产盗摄| 久久精品毛片| 美女精品导航| 麻豆成人小视频| 综合婷婷亚洲小说| 欧美亚视频在线中文字幕免费| 国产手机视频在线观看| 亚洲色图日韩av| caoporm超碰国产精品| av免费在线观看网址| 国产98在线|日韩| 在线观看亚洲精品视频| 免费萌白酱国产一区二区三区| 天天色综合天天色| 欧美激情在线一区| 一区二区三区高清不卡| 97精品中文字幕| 欧美亚洲日本| 特级黄色录像片| 欧美国产亚洲精品久久久8v| 国产精品嫩草影院com| 99久久www免费| 青草在线视频| 成人亚洲成人影院| 国产精品第3页| 午夜精品久久一牛影视| 亚洲精品美女| xxxxxx欧美| 欧美高潮视频| 中文国产成人精品| 红桃视频国产精品| 巨茎人妖videos另类| 精品国产一区二区三区四区vr| 91麻豆免费看| 欧美另类女人| 韩国三级成人在线| 中文字幕在线观看第一页| 日本午夜精品电影| 欧美国产在线视频| 精品久久久久久久久久久院品网| 久久久久九九视频| 中文亚洲免费| 亚洲超碰在线观看| 免费黄网站在线| 无码人妻精品一区二区三区99v| 97国产精品免费视频| 亚洲欧美成人在线| 天天综合日日夜夜精品| 成人黄色国产精品网站大全在线免费观看 | 国产一区二区在线影院| 亚洲天堂久久| 理论片一区二区在线| 丁香激情视频| 久久久久久久久久久免费视频| 国产精品久久久久久久久久直播| 久久久成人精品| 在线观看国产成人av片| 91福利国产成人精品照片| 老**午夜毛片一区二区三区 | 免费不卡av在线| 视频二区一区| 亚洲精品日韩av| 国产精品久久久久av免费| 精品欧美一区二区在线观看| 欧美极品xxx| 美女在线一区二区| 超碰aⅴ人人做人人爽欧美| 在线观看亚洲色图| 在线视频91| 致1999电视剧免费观看策驰影院| 欧美日韩在线精品| 亚洲一卡二卡区| 欧美日韩亚洲在线 | 亚洲午夜免费| 中文字幕一区二区三区四区久久| 福利一区三区| 成人爽a毛片| 亚欧美无遮挡hd高清在线视频 | 亚洲国产精品久久人人爱| 欧美日韩国产丝袜另类| 日韩一级完整毛片| 精品国产伦一区二区三区免费| 欧美亚洲国产怡红院影院| 91精品国产综合久久久久久| 日韩二区三区在线| 亚洲网在线观看| 日本成人免费在线| 国产精品国产精品| 亚洲色欲久久久综合网东京热| 超碰97免费观看| 国产精品一色哟哟| 欧美精品自拍视频| 熟妇人妻va精品中文字幕 | 午夜精品一区在线观看| 欧美日韩一级黄| 国产亚洲精品日韩| 久久精品欧美视频| 韩国一区二区三区美女美女秀| 亚洲免费视频一区| 69堂免费视频| 草莓福利社区在线| 中文字幕久久精品一区二区| 一本久道久久综合狠狠爱| 国v精品久久久网| 91传媒视频在线播放| 欧美日韩一区高清| 亚洲第一区在线观看| 色久欧美在线视频观看| 午夜精品视频网站| 少妇熟女一区二区| 粉嫩粉嫩芽的虎白女18在线视频| 99re8这里只有精品| 毛片网站大全| 成人h动漫免费观看网站| 成人台湾亚洲精品一区二区| 视频一区二区三区中文字幕| 中文字幕一区二区三区色视频| 亚洲第一精品夜夜躁人人躁| 成人精品一区二区三区电影免费| 久久99九九| eeuss影院www在线播放| 欧美日韩国产观看视频| 国产精品久久久久毛片大屁完整版| 精品在线播放午夜| 国产精品久久久久久妇女6080|