Android异常与性能优化相关面试问题-内存管理面试问题详解
生活随笔
收集整理的這篇文章主要介紹了
Android异常与性能优化相关面试问题-内存管理面试问题详解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
內存管理機制概述:
- 分配機制:操作系統會為每一個進程分配一個合理的內存大小,從而保證每一個進程能夠正常的運行,不至于內存不夠使用,或者某個進程占用過多的內存。
- 回收機制:在系統內存不足的時候,系統有一個合理再分配資源的一個機制,從而保證新的進程能夠正常運行,回收的時候就要殺死那些正在占用內存的進程,而Android系統也有一套自己的回收機制。
Android內存管理機制:?
- 分配機制:Android在為每個進程分配內存的時候采用了彈性的分配方式,一開始不會為APP分配太多的內存,而是開始只是分配一個小額的量,而這個量是根據手機物理內存的量而動態調整的,隨著APP不斷的運行當發現內存不夠用了則android會為其分配一個額外的內存大小,但是這個額外的內存大小不是隨意分配的,是有大小限制的,而Android的最大限度就是讓更多的進程存活的內存當中,這樣的話當用戶再一次啟動該APP進程時不需要重新創建進程,這時只要恢復已有的進程就可以了,減少APP啟動的時間提高了用戶體驗。
- 回收機制:由于Android是盡可能的讓進程都存活以提高用戶體驗,當內存不足的時候,則會按一定的規則去殺掉APP以釋放內存,則會按進程的優先級進來回收。
內存管理機制的特點:
- 更少的占用內存。
- 在合適的時候,合理的釋放系統資源,并非內存越少APP越好,因為內存抖動也會影響APP性能。
- 在系統內存緊張的情況下,能釋放掉大部分不重要的資源,來為Android系統提供可用的內存。
- 能夠很合理的在特殊生命周期中,保存或者還原重要數據,以至于系統能夠正確的重新恢復該應用。
內存優化方法:
- 當Service完成任務后,盡量停止它,可以采用IntentService。
- 在UI不可見的時候,釋放掉一些只有UI使用的資源。
- 在系統內存緊張的時候,盡可能多的釋放掉一些非重要資源。
- 避免濫用BitMap導致的內存浪費。
- 使用針對內存優化過的數據容器。
- 避免使用依賴注入的框架。
- 使用ZIP對齊的APK。IDE已經集成了
- 使用多進程。
內存溢出 vs 內存泄漏:
內存溢出會出現OOM異常,而內存泄漏不一定會拋異常,但是它是造成OOM的主要原因。
轉載于:https://www.cnblogs.com/webor2006/p/8988923.html
總結
以上是生活随笔為你收集整理的Android异常与性能优化相关面试问题-内存管理面试问题详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用表组织数据
- 下一篇: sourceTree 的使用教程