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