精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Android中內存優化的那些事 - 一個有關圖片的優化記錄

移動開發 Android
內存問題永遠是既陌生又熟悉的話題,而且大多數都發生在一個叫作用戶家的手機上。安卓系統本身不斷的在優化,三方框架也逐漸成熟,外加手機廠商的大內存加持,似乎內存問題變得少見,但還是不能忽視。

客服群里叫喊著:這個用戶圖片不顯示了,那個用戶圖片也不顯示了。我拿著手上一切正常的測試機,what the hell……

默默地打開bugly。

  

 

 

滿園春色關不住,遍地內存溢出來!是的,又闖禍了!

內存問題永遠是既陌生又熟悉的話題,而且大多數都發生在一個叫作用戶家的手機上。安卓系統本身不斷的在優化,三方框架也逐漸成熟,外加手機廠商的大內存加持,似乎內存問題變得少見,但還是不能忽視。

借著這次修復內存問題的記錄,分享一些“自以為”的解決思路,僅供參考。ok,let’s go!

修復問題的三部曲,先復現,再定位,***修復。

復現

估計有的人會說,異常現象都在那,有啥好復現的,沖進代碼直接開干。

修復bug永遠是個驚心動魄的事,稍微一不小心就有可能天崩地裂。不是修復不完全,就是引入新問題。從起因開始了解整個緣由,一方面能加深對問題的理解,同時確保最終能驗證問題是否得到修復。

內存的問題經常發生在一些比較特殊的環境下,而且很多時候不一定是必現,往往體現在一些中低端機型上。所以從機型上入手可能會是一個不錯的選擇。

最終,通過bugly查到了對應的問題機型及系統版本,上各類云測平臺找到了臺云測試機。按照進入問題頁面的幾個固定流程,反復執行,最終鎖定了復現流程。

定位

知道問題如何復現,接下來就是定位問題到底出在哪。通常內存的問題,會碰到兩種情況:

  1. 內存堆積:由于特殊情況造成的頁面關閉但資源還遺漏在內存中。
  2. 內存高占用:由于業務需要或者使用不當導致內存占用量過高。

我們先來看看這次的問題屬于哪種情況。

在Android Studio2.3及之前版本上自帶的Android monitor中,可以直觀的反應出當前應用的整體內存使用水平。[如何使用工具的分享估計大家都看膩了,這次就不再重復了。

 

142MB!!!!進入事故現場之前就已經被占用了這么多內存。難怪之后會內存異常。看來這次要先解決內存高占用的問題,我們先要詳細的了解內存的具體情況,才知道從哪下手去解決,無論是避免無意義的使用或者優化必要的占用。

先強制gc一下,然后dump java heap,看一下整體內存里的情況,按照shallow size排序。

 

首當其沖的byte數組映入眼簾,大家都明白的,bitmap一直都是大客戶。我們接著分析下byte[]中的各個對象。

 

從數據上看,有很多大小相同的內存使用,從理論上看應該是有很多尺寸相同的圖片。可為什么會有這么多呢?是相同的圖片重復了?or other?

所謂耳聽為虛眼見為實,如果能看到這些圖片長什么樣,是否就容易做出對應的判斷了?來,開始行動:

來自Gracker的Android內存優化之三:打開MAT中的Bitmap原圖 | Performance。

感謝Gracker的分享,Get到一個新技能。具體流程參見傳送門。主體思路就是通過MAT將對應的byte數組另存為圖片原始文件,再用對應的工具打開預覽即可。不過我記得以前Android Studio是可以直接看的,可現在不知道跑哪了。

步驟一:

因為Android Studio dump出來的文件mat是無法直接打開的,所以需要做一次轉換。在Captures中找到剛剛dump出來的prof文件。右鍵 -> Export to standar .hprof 即可。

 

步驟二:

通過MAT Eclipse Memory Analyzer Open Source Project 打開。

 

步驟三:

右鍵想要查看的對象 -> Copy -> Save Value To File。保存為xxx.data。他推薦使用Gracker分享中的gimp。Photoshop不確定是不是我使用方式有問題,在驗證的時候一直無法正常顯示。

 

步驟四:

查看對應圖片的相關屬性,主體是要寬高,因為上一步中保存的是圖片的原始格式文件,其中不包含對應的參數信息,所以在導入gimp中需要指定對應的參數。

 

步驟五:

打開gimp GIMP - Downloads. 然后打開剛剛導出的問題。圖像類型根據實際的來,一般都是8888或者565,選擇RGB Alpha或者RGB565。然后寬度與高度填寫剛剛查詢到的參數。***點擊open就能看到實際的圖片。

 

 

通過這個方式,可以直觀的查看到內存中圖片的實際情況。然后我們就可以進一步分析產生問題的實際原因。

通過以上方式,定位到了3個問題:

  1. 有大量圖片資源占用,首頁確實有好多圖。
  2. 有暫未使用到的圖片資源占用(gone狀態)。
  3. 有大量蒙版圖片占用,因為設計師要求的效果。

解決 - 大量圖片占用

對于大量圖片占用的問題,其實從以下幾個個方向來看思考問題。

  1. 從效果設計的角度來避免,盡可能的少使用滿屏圖片的方式來處理需求。但這方面我個人主張尊重設計師,專業的事情交給專業的人去處理。
  2. 圖片資源本身,在滿足效果的前提下,盡可能的選用RGB565,也許少量圖片不明顯,但在量大的情況下,節省的內存資源還是很客觀。
  3. 圖片資源在不使用的時候及時釋放。

結合以上方向來看下我們遇到的問題。設計角度目前無法調整,緣由都是淚,這里就不多說了。資源本身已經是RGB565。圖片的釋放應該是fresco的強項,可從現象上看似乎并沒有。看來問題可能出在這,回ui頁面上瞄一眼,明白了。

viewpager + fragment + recyclerview,相當于大量圖片都屬于使用狀態,所以fresco不會去釋放對應的資源。

臨時解決方案:

為了確保核心邏輯的順利,通過RxBus的方式,在進入和退出核心頁面時發送Event事件,然后在大量使用圖片的頁面注冊接收此系列事件,遍歷所有SimpleDraweeView,調用其Controller的onDetach或onAttach來,從而實現圖片資源引用的臨時釋放和加載恢復。

為什么是臨時解決方案,因為我總覺得是一種取巧的方式,理論上看。是不應該直接調用方法來插手fresco的管理流程。所以此處留坑,之后再次深入了解fresco的原理后再回填,也希望大家提些建議或者意見。

解決 - 暫未使用到的圖片資源占用

每個頁面中,都有處理網絡異常及相關數據加載異常的提示。原先的處理方式是通過include統一導入后隱藏,在遇到異常的時候才顯示出來。問題就出在這,這些異常提示本身是小概率觸發,但通過include標簽導入的話,會直接實例化完成,占用內存資源。

臨時解決方案:

改用ViewStub標簽,實現按需加載。

為什么又是臨時解決方案呢,因為有些機型在黑屏狀態下是切斷wifi的,當重新進入應用的時候都會經過一個聯網的過程,所以會先觸發聯網異常,ViewStub只能加載一次,加載完后就占用內存了。

解決 - 蒙版圖片

之前為了在圖片上顯示文字但又不想被圖案所影響,所以在上面加一層陰影蒙版來保證字體的顯示效果。習慣用fresco:overlayImage的方法來實現。但這種實現方式會造成蒙版本身是一個獨立的內存資源。

解決方法:

嘗試通過Processor的方式,預先把蒙版與要顯示的圖片合成,使得在內存中只保留一份資源。

結果

通過以上優化方式,同樣的機型再次檢測,內存占用下來了....

 

總結

這次從內存高占用入手,解決了由于內存使用量過高導致的內存溢出。等之后遇到內存遺留問題時,再來補下文。

內存問題的排查與解決算是一個老生常談的話題,因為適配等等情況往往又是一個比較棘手的問題。開發的時候很難發現,所以建議一個需求完成后都例行的檢查下內存狀況,看下是否有問題后者需要調整的部分。 

責任編輯:龐桂玉 來源: Android技術之家
相關推薦

2015-09-08 14:42:17

Android性能優化

2015-07-23 09:30:43

爛代碼程序員

2013-09-16 16:56:09

AndroidBitmap內存優化

2012-06-19 13:15:58

WANSharePoint

2018-07-05 09:25:07

系統存儲層次

2022-04-08 09:47:55

性能優化開發

2022-09-15 08:33:11

ChaosBladeJava場景

2016-12-20 10:59:43

MySQL存儲insert

2017-02-14 17:00:39

iOSApp內存優化

2021-08-11 21:46:47

MySQL索引join

2017-03-08 08:53:44

Git命令 GitHub

2021-05-17 08:18:35

Java內存模型JMM

2019-07-15 15:37:31

頁面緩存內存

2020-05-20 13:24:28

MySQL優化數據庫

2015-08-27 17:08:46

大數據

2011-07-21 16:40:28

網站優化

2023-02-23 12:15:05

2017-01-10 13:33:51

iOS編程throttle

2018-04-09 08:55:05

LinuxWindows頁面緩存

2017-03-14 18:48:06

Android性能優化內存優化
點贊
收藏

51CTO技術棧公眾號

欧美老女人性生活视频| 欧美伦理片在线观看| 偷拍精品一区二区三区| 久久人人97超碰国产公开结果| 国产亚洲欧美视频| 青娱乐精品在线| 欧美激情网站| 国产精品福利一区| 精品视频一区二区| 国产又黄又粗又硬| 国产亚洲毛片| 欧美成人免费观看| 国产熟女一区二区| 国产精品毛片久久久| 在线观看免费视频综合| 成人在线视频一区二区三区| 黄色影院在线播放| 成人av中文字幕| 国产精品欧美一区二区| 日韩aaaaaa| 欧美在线亚洲综合一区| 夜夜嗨av一区二区三区免费区| 国产男女无遮挡猛进猛出| 精品三区视频| 欧美日韩免费观看中文| 欧美日韩中文字幕在线播放| av女优在线| 久久这里都是精品| 国产自产在线视频一区| 91资源在线视频| 日韩精品免费视频人成| 4438全国成人免费| 久久婷婷综合国产| 中文在线播放一区二区 | 成年网站在线播放| 性欧美xxx69hd高清| 亚洲国产精品天堂| 毛片av在线播放| 国产在线激情| 亚洲私人黄色宅男| 在线观看日韩片| 91视频在线观看| 国产清纯美女被跳蛋高潮一区二区久久w| 成人永久免费| 成人小说亚洲一区二区三区| 国产福利一区在线观看| 99在线观看| 午夜精品久久久久久久96蜜桃| 久久99国产精品久久| 国产精品欧美激情在线播放| 中文字幕在线网站| 蜜臀久久久99精品久久久久久| 国产成人精品视| 黄色av网站免费| 性色一区二区| 国产精品国产自产拍高清av水多| 区一区二在线观看| 日日欢夜夜爽一区| 国产精品人人做人人爽| 亚洲一区二区三区高清视频| 日本vs亚洲vs韩国一区三区二区| 国产精品久久久91| 一卡二卡三卡在线观看| 日本成人在线电影网| 国产精品普通话| 国产乱码精品一区二区| 国产成人免费在线| 国产专区一区二区| sese一区| 亚洲免费看黄网站| 免费国产黄色网址| 51一区二区三区| 欧美一区二区在线观看| 在线xxxxx| 国产欧美日韩免费观看 | 在线观看av免费| 亚洲一区二区在线免费看| 阿v天堂2017| 99久久久国产精品免费调教网站| 欧美日韩国产高清一区| 性生交大片免费看l| 琪琪久久久久日韩精品 | 日本动漫同人动漫在线观看| 亚洲成人免费影院| 成年网站在线播放| 高清日韩中文字幕| 亚洲一区第一页| 欧美日韩亚洲国产另类| 亚洲影院在线| 亚洲sss综合天堂久久| 五月天久久久久久| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 18成人在线观看| 欧美一级视频免费看| 国产极品久久久久久久久波多结野| 制服丝袜亚洲色图| 欧美熟妇一区二区| 午夜日韩av| 国产精品久久久久久久久久免费| 国产高清不卡视频| 久久久www免费人成精品| 欧美a级黄色大片| 欧美理论影院| 日韩免费一区二区三区在线播放| 蜜桃无码一区二区三区| 欧美三区美女| 国产精品一区二区久久| 欧美一级特黄aaaaaa大片在线观看| 国产亚洲精品7777| 99色这里只有精品| 在线观看亚洲精品福利片| 国产视频亚洲视频| 久久久久久久极品内射| 六月丁香综合在线视频| 久久国产精品久久| 久草成色在线| 91麻豆精品91久久久久同性| 国产综合精品在线| 宅男噜噜噜66一区二区| 成人91视频| 成人午夜在线影视| 欧美日韩精品一区二区三区蜜桃| 屁屁影院国产第一页| 欧美激情日韩| 91精品在线观看视频| 午夜视频在线看| 欧美色视频在线观看| 亚洲午夜福利在线观看| 在线看片一区| 国产精品一区二区免费| 最新黄网在线观看| 欧美一级片在线| 顶级黑人搡bbw搡bbbb搡| 久久狠狠亚洲综合| 亚洲午夜精品国产| 成人在线高清| 中日韩午夜理伦电影免费| 少妇久久久久久久| 国产亚洲一二三区| 无码日韩人妻精品久久蜜桃| 成人爽a毛片| 韩剧1988免费观看全集| 少妇一区二区三区四区| 精品久久久久久久久久| 日本黄色免费观看| 久久成人一区| 日韩免费电影一区二区| 日本综合视频| 日韩中文字幕免费| 国产又粗又黄又爽的视频| 国产精品护士白丝一区av| 成 人 黄 色 小说网站 s色| 99久久久久| 91久久偷偷做嫩草影院| 在线观看免费视频你懂的| 亚洲成色www8888| 久久久久久久久久免费视频| 91网上在线视频| 日本成人黄色网| 日韩欧美午夜| 91色琪琪电影亚洲精品久久| 在线看福利影| 亚洲国产精品成人一区二区| 日本韩国欧美中文字幕| 中文字幕第一区| 午夜免费一级片| 黄色亚洲免费| 欧美一区2区三区4区公司二百| 色综合天天色| 欧美成人剧情片在线观看| 人人妻人人玩人人澡人人爽| 欧美性猛交xxxx免费看| 免费看91的网站| 国产一区二区福利| 欧美日韩性生活片| 色男人天堂综合再现| 999国内精品视频在线| 高清在线视频不卡| 一区二区三区视频观看| 国产男女猛烈无遮挡| 午夜一区二区三区视频| 免费看裸体网站| 国产成人亚洲综合a∨婷婷| 国内性生活视频| 人人狠狠综合久久亚洲婷| 97se国产在线视频| 精品欧美日韩精品| 久久久久久久久久国产| 国产在线视频网| 日韩欧美专区在线| 亚洲国产av一区二区三区| 成人欧美一区二区三区1314| 亚洲成人av免费在线观看| 久久成人羞羞网站| 黄色免费视频大全| 91成人网在线观看| 欧美久久久久久| 4438全国亚洲精品观看视频| 国产精品高潮呻吟久久av无限| 日本天码aⅴ片在线电影网站| 亚洲视频国产视频| 黄色av中文字幕| 欧美精品xxxxbbbb| 好吊色在线视频| 亚洲一二三区不卡| 91免费公开视频| 国产日韩在线不卡| 久久久久麻豆v国产精华液好用吗 在线观看国产免费视频 | 亚洲综合网av| 狠狠爱在线视频一区| 91无套直看片红桃在线观看| 91毛片在线观看| 9191在线视频| 国产一区二区三区香蕉| 杨幂毛片午夜性生毛片| 在线亚洲自拍| 成年人网站免费视频| 欧美1区2区| 中文字幕综合在线观看| 欧美日韩国产高清电影| 久久草.com| 任我爽精品视频在线播放| 亚洲最大成人网色| av成人在线网站| 国产日韩换脸av一区在线观看| 日本韩国欧美| 亲子乱一区二区三区电影 | 欧美激情偷拍自拍| 亚洲国产欧洲综合997久久| 私拍精品福利视频在线一区| 国产69精品久久久久9999apgf| 国产美女亚洲精品7777| 国产欧美日韩中文字幕| 成人在线视频免费| 国产第一区电影| 日韩高清不卡| 国产精品成人一区二区| 日韩国产激情| 国产精品www色诱视频| 偷拍中文亚洲欧美动漫| 日韩女在线观看| 国模视频一区| 国产精品亚洲激情| 偷拍自拍亚洲| 91在线看www| 日韩视频一二区| 国产精品美女黄网| 久久电影在线| 欧美二级三级| 日本a口亚洲| 日本特级黄色大片| 欧美1区2区视频| 福利视频一二区| 亚洲在线成人| 天堂在线资源视频| 精品一区二区三区久久久| 亚洲精品mv在线观看| 国产一区二区看久久| 美女被爆操网站| 91在线国产观看| 午夜在线观看一区| 亚洲欧洲日产国产综合网| 青青草精品在线视频| 亚洲综合在线视频| 91午夜视频在线观看| 色婷婷av一区| 97视频免费在线| 精品国产乱码久久| 久久手机免费观看| 日韩中文字幕在线精品| 青春草视频在线观看| 琪琪第一精品导航| 亚洲欧美综合久久久久久v动漫| 91在线视频免费| 欧美电影在线观看完整版| 日韩高清国产一区在线观看| 国产精品久久久久久麻豆一区软件 | wwwxx欧美| 免费福利视频一区| 午夜精品视频在线观看一区二区 | 久久精品水蜜桃av综合天堂| 91n在线视频| 亚洲a一区二区| 一级特黄色大片| 日韩精品免费观看| 国产网友自拍视频导航网站在线观看 | 成人动漫视频在线观看完整版| 欧美三级电影在线| 中文字幕欧美日韩一区二区| 日韩亚洲在线| 污污网站在线观看视频| av在线不卡观看免费观看| 999精品久久久| 精品福利在线观看| 国产精品久久久久久久久久久久久久久久久久 | 操欧美老女人| 你真棒插曲来救救我在线观看| 日韩精品一卡二卡三卡四卡无卡| www.51色.com| 国产亚洲女人久久久久毛片| 日韩激情一区二区三区| 欧美日韩成人综合天天影院 | 中文字幕欧美日韩| 国产伦理精品| 91九色视频在线观看| 精品国产91| 成人av一级片| 成人午夜看片网址| 日本中文在线视频| 在线观看日韩一区| 日本一区高清| 午夜精品一区二区三区在线视| 日日夜夜亚洲精品| 视频一区三区| 蜜桃伊人久久| 中文字幕在线播放视频| 一区二区三区四区精品在线视频 | 国产日韩欧美综合| 日本韩国欧美超级黄在线观看| 9色视频在线观看| 狠狠色伊人亚洲综合成人| 精品无码在线观看| 欧美视频在线免费| 日韩一区二区三区不卡| 欧美麻豆久久久久久中文 | 久久九九99| 亚洲第九十七页| 午夜精品福利一区二区三区蜜桃| 国产夫妻在线观看| 久久99久久99精品免观看粉嫩| 日韩福利影视| 日韩三级在线播放| 日本欧美在线观看| 我不卡一区二区| 欧美亚洲国产一卡| 二区三区在线| 国产精品久久久久久影视| 精品国产网站| 国产九九在线视频| 国产精品卡一卡二卡三| 在线免费观看视频网站| 中文字幕在线观看亚洲| 国产精品伦一区二区| 一级特黄录像免费播放全99| 久久电影网站中文字幕 | 国产高清视频在线| 国产成人啪精品视频免费网| 精品72久久久久中文字幕| 亚洲人成无码www久久久| 国产日韩欧美激情| 中文字幕+乱码+中文乱码www| 伊人av综合网| 伊人国产精品| 免费在线看黄色片| 不卡av电影在线播放| 国产成人免费观看视频| 亚洲人午夜色婷婷| 欧美成人毛片| 成人在线视频一区二区三区| 成人激情综合网站| 精品国产乱子伦| 精品久久久999| 91蜜桃臀久久一区二区| 男女视频网站在线观看| 久久久电影一区二区三区| 91成人国产综合久久精品| 欧美肥老妇视频| 亚洲精品小区久久久久久| 在线观看高清免费视频| 亚洲色图欧洲色图婷婷| 手机在线观看毛片| 国产精品男人爽免费视频1| 欧美一区二区三区久久精品| 国产精品手机在线观看| 在线精品观看国产| 影院在线观看全集免费观看| 精品一区二区久久久久久久网站| 日韩精彩视频在线观看| 久久国产精品国语对白| 日韩国产欧美精品一区二区三区| av一区在线播放| 福利视频一区二区三区四区| 久久久久国产精品人| 国产日韩免费视频| 日本不卡免费高清视频| 日本成人免费在线观看| 色噜噜狠狠成人网p站| 国产成人l区| 欧美久久在线| 国产精品1区2区| 成年人视频免费| 国产69精品久久久久9| 日韩大片在线| 久久午夜夜伦鲁鲁片| 91.com视频| 国产成人精品一区二三区在线观看 | 每日更新av在线播放| 91成人伦理在线电影| 日本欧美在线观看| 久热这里只有精品6|