Crash & OOM

Crash

.閃退(Crash)是客戶端程序在運(yùn)行時(shí)遭遇無(wú)法處理的異常或錯(cuò)誤時(shí)而退出應(yīng)用程序的表現(xiàn)颈将,請(qǐng)從crash發(fā)生的原因分類與解決方法奔浅、
在出現(xiàn)crash后如何捕捉并分析異常這兩個(gè)問(wèn)題給出自己的解決方案

原因分類
  • 虛擬機(jī)Error:一些虛擬機(jī)無(wú)法處理而拋出的異常画拾,比如常見(jiàn)的stackoverflow和oom
  • RuntimeException:比如常見(jiàn)的NullPointException皿哨、ArrayIndexOutOfBoundException和ClassNotFoundException等
  • 非運(yùn)行異常:比如FileNotFoundException
  • Android特有屬性:比如使用主線程進(jìn)行耗時(shí)操作砰逻,比如網(wǎng)絡(luò)請(qǐng)求
image.png
解決方案
  • 正確并有效地使用異常
    具體明確地拋出異常购公,而不是為了簡(jiǎn)單拋出一個(gè)Exception洲守;
    提早拋出異常片酝,比如在文件操作時(shí)固耘,需要對(duì)filename進(jìn)行檢查葬毫;
    延遲捕獲镇辉,不要過(guò)早地吃掉異常

  • 使用Android進(jìn)程中的UnCaughtExceptionHandler(未捕獲異常處理器)對(duì)象
    自定義一個(gè)UncaughtExceptionHandler對(duì)象,并設(shè)置為當(dāng)前進(jìn)程的UncaughtExceptionHandler對(duì)象贴捡,重寫(xiě)UncaughtExceptionHandler
    方法來(lái)在閃退前獲取導(dǎo)致閃退異常的詳細(xì)信息忽肛。

  • 使用第三方解決方案:比如Bugly、ACRA等烂斋。

OOM

APP發(fā)生OOM的原因以及如何避免

1.內(nèi)存壓力過(guò)大
  • 加載大量圖片屹逛,導(dǎo)致內(nèi)存不足: 對(duì)圖片進(jìn)行壓縮,并采用軟引用方法
  • 重復(fù)創(chuàng)建大量的view汛骂,比如listview的使用convertview和viewHolder
2.作用域不同罕模,導(dǎo)致垃圾回收器無(wú)法回收
  • 非靜態(tài)內(nèi)部類隱性持有外部類的引用
  • context泄露:不要對(duì)Context-Activity長(zhǎng)時(shí)間的引用(若要使用,必須保證和activity相同的生命周期)帘瞭;盡量用Application-Context淑掌;
3. 資源對(duì)象沒(méi)有關(guān)閉
  • 常見(jiàn)的資源對(duì)象比如cursor, stream
  • bitmap對(duì)象使用后不回收
  • 調(diào)用registerReceiver后,銷毀活動(dòng)時(shí)沒(méi)有調(diào)用un方法蝶念。

如何避免內(nèi)存泄露

  • 使用緩存技術(shù)抛腕,比如LruCache或DiskLruCache芋绸,對(duì)象重復(fù)并頻繁創(chuàng)建時(shí)使用對(duì)象池,比如Volley源碼中定義ByteArrayPool作為byte數(shù)組的緩存池
  • 對(duì)于引用生命周期不同的對(duì)象担敌,采用軟引用或弱引用
  • 對(duì)于資源對(duì)象摔敛,一定要關(guān)閉
  • 內(nèi)存壓力過(guò)大,就需要統(tǒng)一管理內(nèi)存
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末柄错,一起剝皮案震驚了整個(gè)濱河市舷夺,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌售貌,老刑警劉巖给猾,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異颂跨,居然都是意外死亡敢伸,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)恒削,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)池颈,“玉大人,你說(shuō)我怎么就攤上這事钓丰∏椋” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵携丁,是天一觀的道長(zhǎng)琢歇。 經(jīng)常有香客問(wèn)我,道長(zhǎng)梦鉴,這世上最難降的妖魔是什么李茫? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮肥橙,結(jié)果婚禮上魄宏,老公的妹妹穿的比我還像新娘。我一直安慰自己存筏,他們只是感情好宠互,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著椭坚,像睡著了一般予跌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上藕溅,一...
    開(kāi)封第一講書(shū)人閱讀 49,007評(píng)論 1 284
  • 那天匕得,我揣著相機(jī)與錄音继榆,去河邊找鬼巾表。 笑死汁掠,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的集币。 我是一名探鬼主播考阱,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼鞠苟!你這毒婦竟也來(lái)了乞榨?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤当娱,失蹤者是張志新(化名)和其女友劉穎吃既,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體跨细,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鹦倚,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了冀惭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片震叙。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖散休,靈堂內(nèi)的尸體忽然破棺而出媒楼,到底是詐尸還是另有隱情,我是刑警寧澤戚丸,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布划址,位于F島的核電站,受9級(jí)特大地震影響昏滴,放射性物質(zhì)發(fā)生泄漏猴鲫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一谣殊、第九天 我趴在偏房一處隱蔽的房頂上張望拂共。 院中可真熱鬧,春花似錦姻几、人聲如沸宜狐。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)抚恒。三九已至,卻和暖如春络拌,著一層夾襖步出監(jiān)牢的瞬間俭驮,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留混萝,地道東北人遗遵。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像逸嘀,于是被迫代替她去往敵國(guó)和親车要。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,501評(píng)論 25 707
  • 從三月份找實(shí)習(xí)到現(xiàn)在崭倘,面了一些公司翼岁,掛了不少,但最終還是拿到小米司光、百度琅坡、阿里、京東残家、新浪脑蠕、CVTE、樂(lè)視家的研發(fā)崗...
    時(shí)芥藍(lán)閱讀 42,184評(píng)論 11 349
  • 1跪削、什么是oom 一句話:c++ 中內(nèi)存的泄漏指定的new出來(lái)的對(duì)象 谴仙,沒(méi)有delete掉,變成了空指針.java...
    仕明同學(xué)閱讀 6,941評(píng)論 9 11
  • 內(nèi)存管理的目的就是讓我們?cè)陂_(kāi)發(fā)中怎么有效的避免我們的應(yīng)用出現(xiàn)內(nèi)存泄漏的問(wèn)題碾盐。內(nèi)存泄漏大家都不陌生了晃跺,簡(jiǎn)單粗俗的講,...
    宇宙只有巴掌大閱讀 2,360評(píng)論 0 12
  • 《針灸心法淺談》名曰淺談毫玖,實(shí)則不然掀虎,反而道理頗深。 書(shū)中所敘述的內(nèi)容都是針灸真正精髓層面的知識(shí)付枫。而我以淺談為題烹玉,則...
    參朮苓草閱讀 3,318評(píng)論 5 9