android程式記憶體流失的原因和解決辦法

來源:互聯網
上載者:User

     記憶體流失也稱作“儲存滲漏”,用動態儲存裝置分配函數動態開闢的空間,在使用完畢後未釋放,結果導致一直佔據該記憶體單元。直到程式結束。即所謂記憶體流失。        

      記憶體流失簡單地說就是申請了一塊記憶體空間,使用完畢後沒有釋放掉。它的一般表現方式是程式已耗用時間越長,佔用記憶體越多,最終用盡全部記憶體,整個系統崩潰。由程式申請的一塊記憶體,且沒有任何一個指標指向它,那麼這塊記憶體就泄露了。

       從使用者使用程式的角度來看,記憶體流失本身不會產生什麼危害,作為一般的使用者,根本感覺不到記憶體流失的存在。真正有危害的是記憶體流失的堆積,這會最終消耗盡系統所有的記憶體。從這個角度來說,一次性記憶體流失並沒有什麼危害,因為它不會堆積,而隱式記憶體流失危害性則非常大,因為較之於常發性和偶發性記憶體流失它更難被檢測到。

Android應用記憶體流失的的原因有以下幾個:

1查詢資料庫後沒有關閉遊標cursor 
2 構造Adapter時,沒有使用 convertView 重用
3 Bitmap對象不在使用時調用recycle()釋放記憶體
4 對象被生命週期長的對象引用,如activity被靜態集合引用導致activity不能釋放

記憶體流失的發現:

通過DDMS中的heap工具,去發現是否有記憶體溢出。

記憶體流失如何解決:

通過記憶體分析工具 MAT(Memory Analyzer Tool),找到記憶體泄露的對象

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.