android效能測試之記憶體流失

來源:互聯網
上載者:User

標籤:測試   效能測試   記憶體流失   android應用   android   

1.什麼是記憶體流失?    記憶體流失就是向系統申請記憶體使用量,卻不歸還(釋放),導致該記憶體既不能被自己使用也不能被別人使用。2.記憶體流失和記憶體溢出有什麼區別?   記憶體流失是分配出去的記憶體無法回收。   記憶體溢出是程式使用的記憶體超出了系統能給予的。3.如何從測試資料中得出記憶體流失?   首先,我們需要使用效能測試工具去監控效能資料,android可使用GT.apk(:http://gt.tencent.com/)監控記憶體資料。然後,對測試對象連續重複做完全相同的操作多次。然後,將測試結果(記憶體)製作成折線圖。如果幾次完全相同的操作中,記憶體持續增長,那麼可以判定記憶體流失。4.導致記憶體流失的原因?   android記憶體流失的終極原因就是多線程程式反覆申請釋放記憶體,但是釋放的和申請的不對應,導致吃記憶體。    詳見宋寶華的部落格http://blog.csdn.net/21cnbao/article/details/7706671。以下為部落格原文:    記憶體泄露分為兩種境界,一個是人死了,錢還沒花完,你malloc的記憶體還沒釋放進程就死了,我們說,這個問題在Linux不存在,進程是個資源封裝的單位,進程掛的時候,資源會被核心釋放掉的,死的時候還僅僅有個殭屍而已。第二個境界是,人活著,錢沒了,這個問題才是Linux真正擔心的,一個多線程的程式,運行過程中反覆申請和釋放記憶體,但是釋放的與申請的不對應,就慢慢地吃記憶體,這個進程的記憶體消耗曲線振蕩上升,直到耗盡記憶體。所以,在Linux世界裡,我們不用擔心人死了,錢還沒花完的問題 ,黨會幫我們處理的。我們要擔心的是,人活著,錢沒了的問題。
   所以,能早結束的進程早點結束,多線程中該釋放的記憶體儘早釋放。   不瞭解進程和線程的童鞋可以參考此文章,非常簡單明了 : http://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html 5.如何避免記憶體流失?   1.長期保持了context對象的引用。可參考官方部落格:http://android-developers.blogspot.com/2009/01/avoiding-memory-leaks.html。      引用譯文:在Android應用程式中,很多操作都用到了Context對象,但是大多數都是用來載入和訪問資源的。這就是為什麼所有的顯示控制項都需要一個Context對象作為構造方法的參數。在Android應用程式中通常可以使用兩種Context對象:Activity和Application。當類或方法需要Context對象的時候常見的作法是使用第一個作為Context參數。但這就意味著View對象對整個activity保持引用,因此也就保持對activity內的所有東西的引用,也就是整個View結構和它所有的資源都無法被及時的回收,而且對activity的長期引用是比較隱形。   2.其他情況可參考這個博文,寫的挺詳細,我還沒來得及看,看完之後再簡單分析一下。        Android之記憶體流失調試學習與總結http://mzh3344258.blog.51cto.com/1823534/895093

android效能測試之記憶體流失

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.