如何避免OOM?

2021-09-19 04:03:45 字數 683 閱讀 5248

2.便面列舉的使用,可以用靜態常量或者註解@intdef替代

3.bitmap優化:

a.尺寸壓縮:通過insamplesize設定合適的縮放

b.顏色質量:設定合適的format,argb_6666/rbg_545/argb_4444/alpha_6,存在很大差異

c.inbitmap:使用inbitmap屬性可以告知bitmap解碼器去嘗試使用已經存在的記憶體區域,新解碼的bitmap會嘗試去使用之前那張bitmap在heap中所佔據的pixel data記憶體區域,而不是去問記憶體重新申請一塊區域來存放bitmap。利用這種特性,即使是上千張的,也只會僅僅只需要占用螢幕所能夠顯示的數量的記憶體大小,但復用存在一些限制,具體體現在:在android 4.4之前只能重用相同大小的bitmap的記憶體,而android 4.4及以後版本則只要後來的bitmap比之前的小即可。使用inbitmap引數前,每建立乙個bitmap物件都會分配一塊記憶體供其使用,而使用了inbitmap引數後,多個bitmap可以復用一塊記憶體,這樣可以提高效能

4.stringbuilder替代string: 在有些時候,**中會需要使用到大量的字串拼接的操作,這種時候有必要考慮使用stringbuilder來替代頻繁的「+」

5.避免在類似ondraw這樣的方法中建立物件,因為它會迅速占用大量記憶體,引起頻繁的gc甚至記憶體抖動

6.減少記憶體洩漏也是一種避免oom的方法

如何避免OOM

2.便面列舉的使用,可以用靜態常量或者註解 intdef替代 3.bitmap優化 a.尺寸壓縮 通過insamplesize設定合適的縮放 b.顏色質量 設定合適的format,argb 6666 rbg 545 argb 4444 alpha 6,存在很大差異 c.inbitmap 使用inbi...

Bitmap的如何避免OOM

一開始的時候是直接判斷bitmap是不是的等於null,不等於的時候就釋放掉 if mbit null 可是測試後才發現還是沒有用 我查了一下資料說是bitmap是乙個私有類,不是的直接new出來的是,而是bitmapfactory.decodefile 得來的,單單釋放掉還是沒有用,想要不出現這份...

Android 優化Bitmap避免OOM

使用android提供的bitmapfactory解碼時,往往會因為過大而遇到 outofmemoryerror的異常。要想正常使用,一種簡便的方式是分配更少的記憶體空間來儲存,即在載入的時候以犧牲質量為代價,將進行放縮,這是一種避免oom所採用的解決方法。但是,這種方法是得不償失的,犧牲了質量。在...