mooc课程精选,成品人片观看入口众乐乐,久久久久人妻一区精品性色av,苍兰诀大结局是什么,白丝美女被狂躁免费视频网站

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > Android教學中遇到的內存泄露和內存溢出

Android教學中遇到的內存泄露和內存溢出 時間:2018-09-26      來源:未知

在Android中每個App的內存是有限的,一般來講,在開發的過程中我們要避免無謂的內存占用。實際教學過程中,有一個很簡單但是很多學生經常會犯的錯誤,在此指出。

觀察以下代碼:

學生乍一看,沒有太大的問題。當然,這個也反應出了很多學生的一個不好的習慣。

首先,Drawable雖然是一種抽象的圖像概念,但是它確實是占用不少資源的,使用static關鍵字來修飾,雖然在編寫的過程中比較省事,但是導致的問題是static修飾的sBackground資源不會輕易釋放,更為嚴重的是,這個sBackground的Drawable持有對其Activity的引用。

這樣就導致這個Activity的實例也不會被釋放,導致內存泄露。

這個問題非常嚴重,但是很多學生現在的階段并不是很關注,因此static關鍵字的教學的過程中應該進行再反思。

關于上文的內存泄露,特別是內存溢出,兩者之間的關系來說明一下。

實際上來說,泄露和溢出這兩個形容并不是很好區分。首先這兩前者是一個狀態,后者是一個結果。

內存泄露是應用使用資源后沒有及時釋放(如本文中例子),導致內存中一直持有多余的內存占用,這個狀態的累積會導致可用內存越來越少。舉例:一個人的資產有一100萬,但是他想買一輛50萬的車,雖然有一百萬的資產,但是身上帶著的銀行卡里只有100元,跟老板口舌一下,也能買,但是這個債務會一直存在。如果一直這樣消費,債務會滾雪球,早晚有崩潰的一天。

內存溢出是指堆棧達到大值后,應用內存無法滿足需求了,導致Crash現象,這是一個結果。舉例:還是上文中的那個人,他想買300萬的房子,這樣根本就買不了。

如果說上面的例子還不足以理解其原因,下面再舉一例:

如上例所示,delay的時間過長也可能導致資源無法及時釋放,這也是一種形式的內存泄露。

一次內存泄露可能并不能有實質性的結果,但是不好的編程習慣,多次的內存泄露終會導致內存溢出,引發重大的bug,這是我們應該極力避免的事情。

雖然在Android開發中Java是基礎語法,Java的垃圾回收機制比較智能,很多情況下并不需要編程者去思考很多問題,但是正是因為這種機制可能會導致很多不可預知的小錯誤的累積。

當然,導致內存泄露和溢出的問題有很多,比如在開發中由于圖片資源占用過多。這些問題我會在今后的博文中跟大家繼續分享。我個人也在不斷的學習之中,希望各位讀者能與我也做一些交流探討。

一個優秀的開發者不僅僅應該局限于寫出程序,而是寫好程序。

上一篇:Gpio模擬i2c總線對24c02進行讀寫

下一篇:Linux下動態庫和靜態庫的制作及使用

熱點文章推薦
華清學員就業榜單
高薪學員經驗分享
熱點新聞推薦
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,京ICP備16055225號-5京公海網安備11010802025203號

回到頂部