android記憶體優化要點
1.減少使用static
2.壓縮圖片資源
防止記憶體溢位:
1.儘量使用Application的Context
2.執行緒內部類寫成靜態的,內部類對context的引用使用弱引用(WeakReference)
3.bitmap使用完及時銷燬
4.BraodcastReceiver,ContentObserver,FileObserver在Activity onDeatory或者某類宣告週期結束之後一定要unregister掉,否則這個Activity/類會被system強引用,不會被記憶體回收。
5.不要直接對Activity進行直接引用作為成員變數,如果不得不這麼做,請用private WeakReference<Activity> mActivity來做,相同的,對於Service等其他有自己宣告週期的物件來說,直接引用都需要謹慎考慮是否會存在記憶體洩露的可能。
6.很多記憶體洩露是由於迴圈引用造成的,比如a中包含了b,b包含了c,c又包含a,這樣只要一個物件存在其他肯定會一直常駐記憶體,這要從邏輯上來分析是否需要這樣的設計。
相關推薦
android記憶體優化要點
降低記憶體使用: 1.減少使用static 2.壓縮圖片資源 防止記憶體溢位: 1.儘量使用Application的Context 2.執行緒內部類寫成靜態的,內部類對context的引用使用弱引用
Android記憶體優化—記憶體洩漏、記憶體抖動、記憶體溢位
記憶體洩漏 當某些物件不再被程式所使用,但是這些物件仍然被某些物件所引用著,進而導致垃圾收集器不能及時釋放它們。 記憶體洩露 指由於疏忽或錯誤造成程式未能釋放已經不再使用的記憶體。 解決辦法:在不需要的時候及時釋放掉資源 記憶體抖動 記憶體抖動 指記憶體頻繁地分配和回
Android記憶體優化—Java的引用方式
四種引用方式 1、強引用(StrongReference) 2、軟引用(SoftReference) 3、弱引用(WeakReference) 4、虛引用(PhantomReference) 強引用(StrongReference) 1、只要某個物件有強引用與之關聯,JVM必
Android記憶體優化—Android的記憶體管理方式
記憶體管理機制 從作業系統的角度來說,記憶體就是一塊資料儲存區域,屬於可被作業系統排程的資源。現代多工(程序)的作業系統中,記憶體管理尤為重要,作業系統需要為每一個程序合理的分配記憶體資源,所以可以從兩方面來理解作業系統的記憶體管理機制。 第一:分配機制。為每一個程序分配一個合理的記
Android記憶體優化—dumpsys meminfo詳解
dumpsys 介紹 Dumpsys使用者系統診斷,它執行在裝置上,並提供系統服務狀態資訊 命令格式: adb shell dumpsys [system serbices] 常用dumpsys命令如下: 1、包資訊查詢 子命令格式:adb shell dumpsys pac
Android記憶體優化
避免因不正確使用記憶體 & 缺乏管理,從而出現 記憶體洩露(ML)、記憶體溢位(OOM)、記憶體空間佔用過大 等問題,最終導致應用程式崩潰(Crash) 示意圖 下面,將針對回收 程序、物件 、變數的記憶體分配 & 回收進行詳細講解 2、
Android記憶體優化工具(三)MAT
前提 MAT介紹和獲取 官網https://eclipse.org/mat/ Memory Analyzer (MAT)是一個Java堆分析器,分析hprof檔案,檢視記憶體中都要哪些物件,都佔用了多少記憶體,檢視誰阻止Garbage Collect
進行Android記憶體優化的SoftReference 和 WeakReference
經過在網上查了一些相關的資料後總結出一下兩個類的用法可以對記憶體進行優化。在Android應用程式開發中,由於手機的資源有限,所以我們經常會需要觀察某物件什麼時候會被垃圾收集的執行緒清除,你必須要用一個 reference 記住它,以便隨時觀察,但是卻因此造成此物件的 reference 數目一直
Android記憶體優化六:系統中使用堆和棧管理記憶體的區別
一直對系統中堆和棧的使用原則不太理解,在網上看到這篇文章,非常不錯! 轉載地址:http://bbs.csdn.net/topics/390147637 在計算機領域,堆疊是一個不容忽視的概念,我們編寫的C語言程式基本上都要用到。但對於很多的初學著來說,堆疊是一個很模糊的概
Android記憶體優化彙總
寫在最前: 本文的思路主要借鑑了2014年AnDevCon開發者大會的一個演講PPT,加上把網上搜集的各種記憶體零散知識點進行彙總、挑選、簡化後整理而成。 所以我將本文定義為一個工具類的文章,如果你在ANDROID開發中遇到關於記憶體問題,或者馬上要參加面試,或者就是單純的學習或複習一
android記憶體優化之三記憶體分析工具的使用
anroid記憶體分析工具的使用 一.Eclipse Heap分析記憶體洩露 Android開發中避免不了碰到記憶體洩露問題,這裡先大概講下記憶體洩露的基本概念:記憶體洩露官方的解釋是是用動態儲存分配函式動態開闢的空間,在使用完畢後未釋放,結果導致一直
Java記憶體機制以及Android記憶體優化
Java記憶體機制 1. 虛擬機器執行時資料區 基本概念 虛擬機器 模擬某種計算機體系結構,執行特定指令集的軟體。包括程序虛擬機器和系統虛擬機器(VMWare) 程序虛擬機器:JVM、Adobe Flash Player、FC模擬器 高階語言虛擬機器:JVM、.NE
android記憶體優化之webview
在混合型app中它是主角,一切由它呈現,如58同城,趕集網等;在另一些超級app中亦有它的影子,微信,qq,支付寶,沒有一個超級app能少了它,既能展示最新最潮的實時資訊,又能扮演盤踞一方的全功能型網站,與native結合後又能扮演諸如公眾號之內的應用等等,其能力可想而知。webview在android端的演
關於Android記憶體優化你應該知道的一切
介紹 在Android系統中,記憶體分配與釋放分配在一定程度上會影響App效能的—鑑於其使用的是類似於Java的GC回收機制,因此係統會以消耗一定的效率為代價,進行垃圾回收。 在中國有句老話:”由儉入奢易,由奢返儉難”。而此諺語也似乎正適應於Android的
Android記憶體優化大全(中)
避免使用浮點數 通常的經驗是,在Android裝置中,浮點數會比整型慢兩倍。 使用實體類比介面好 假設你有一個HashMap物件,你可以將它宣告為HashMap或者Map: Map map1 = new HashMap(); HashMap map2 = new HashMap(); 哪個更好呢?
android 記憶體優化 (圖片篇)一
記憶體簡介: RAM(random access memory)隨機存取儲存器。說白了就是記憶體。 一般Java在記憶體分配時會涉及到以下區域: 暫存器(Registers):速度最快的儲存場所,因為暫存器位於處理器內部,我們在程式中無法控制 棧(Stack):存放基本
Android-記憶體優化之OOM
Android的記憶體優化是效能優化中很重要的一部分,而避免OOM又是記憶體優化中比較核心的一點,這是一篇關於記憶體優化中如何避免OOM的總結性概要文章,內容大多都是和OOM有關的實踐總結概要。理解錯誤或是偏差的地方,還請多包涵指正,謝謝! (一)Android的記憶體
Android 記憶體優化 (防Memory Leak)
Android Memory Leak 和 OOM為什麼會發生。這次主要說說編碼層面,如何來預防Memory Leak的發生。 物件都是有生命週期的,物件的生命週期有的是程序級別的,有的是Activity所在的生命週期,隨Activity消亡;有的是Service所在的生命週期,隨Service消亡。很多情況
Android記憶體優化個人經歷
專案從3月開始做,維護加上各種加功能,App直線增肥,從原來20M的性感美女變成的如今50M的中年大媽,各種繁亂的邏輯要了老命了。特別是上個月的記憶體洩漏導致的卡頓,能把人憋死。App一跑記憶體佔用就300M+,好點的手機還能撐一陣,執行記憶體只有2G的用不到10分鐘就各種
Android記憶體優化--使用SparseArray和ArrayMap代替HashMap
前言 在Android開發時,我們使用的大部分都是Java的api,比如HashMap這個api,使用率非常高,但是對於Android這種對記憶體非常敏感的移動平臺,很多時候使用一些java的api並不能達到更好的效能,相反反而更消耗記憶體,所以針對Andro