oom問題解決

2021-06-18 11:51:25 字數 1157 閱讀 5079

dalvik虛擬機會為應用程式分配固定大小的heap ,如果使用超過了這個heap的大小,且沒有可被**物件,就會報oom。多張較大會迅速占用空間造成oom。

我們可以使用一下的方法來減少這種情況的產生:

1.減少單張的大小,根據螢幕大小來對bitmap做resize。

private void setimagesrc(imageview imageview, string imagepath)

private static int   image_max_width  = 480;

private static int   image_max_height = 960;

private static int getimagescale(string imagepath)

return scale;}

2.使用軟快取來儲存bitmap,在記憶體不足時虛擬機器可快速**。

3.在manifest裡配置android:largeheap="true"

同是我們在使用viewpager的時候至少需要同是載入兩個bitmap物件,我們可以使用fragment來作為viewpager裡的item,然後在onpause方法裡把非當前bitmap乾掉,然後在onresume裡把當前bitmap拿出來。

又比如需求需要crop後和原圖同是存在的情況下,我們無法同是儲存兩個bitmap物件,因此我們可以使用自定義控制項的方法來解決,重寫imageview的onlayout以及ondraw方法來實現。通過onlayout方法得到bitmap的width和height,然後重寫ondraw方法為:

if (mbitmap != null && mwidth != 0 && mheight != 0) else

rect rectdst = new rect(0 + mpadding, 0 + mpadding, mwidth - mpadding, mheight - mpadding);

canvas.drawcolor(mcolor);

canvas.drawbitmap(mbitmap, rectsrc, rectdst, null);

} else

super.ondraw(canvas);

too many open files問題解決辦法

今天用 往liunx中寫檔案,檔案很多 執行一會就日誌上就報錯 too many open files 結果找了半天才解決這個問題,現在給大家分享一下。首先用 ulimit a 命令看看linux的open files值是多少,結果乙隻有1024,不夠用的。然後修改linux的配置檔案,修改 etc...

haoop問題解決

1.namenode不能啟動 cannot lock storage tmp dfs name.the directory is already locked.上網查了查,基本上有兩個辦法 1.重新格式化namenode 2.許可權問題 chown r hadoop hadoop tmp dfs n...

SVPullToRefresh問題解決

今天在使用svpulltorefresh時發現當資料太少時,重新整理的時候同時進行了上拉和下拉重新整理,現解決方法如下 解決辦法 1 開啟iuiscrollview svinfinitescrolling.m 2 然後找到第194行,void scrollviewdidscroll cgpoint ...