Bitmap.createBitmap内存溢出

Android 码拜 8年前 (2016-03-27) 3161次浏览
遇到了一个很坑的问题,在调用下面的方法截图的时候,调用第一次没什么问题,但是在不做其他动作的时候在调用一次就会内存溢出,谁知道是什么问题吗
public static Bitmap createBitmap(Context context, WebView webview) {
Bitmap bmp = null;
Picture snapShot = webview.capturePicture();
bmp = Bitmap.createBitmap(snapShot.getWidth(), snapShot.getHeight(),
Bitmap.Config.ARGB_4444);
Canvas canvas = new Canvas(bmp);
snapShot.draw(canvas);
return bmp;
}
解决方案

10

可以借助recycle()方法显示让GC回收一个Bitmap对象,通常对一个不用的Bitmap可以使用下面的方式:

if(bitmapObject.isRecycled()==false) //假如没有回收
        bitmapObject.recycle();

///

30

引用:
Quote: 引用:
Quote: 引用:
Quote: 引用:

可以借助recycle()方法显示让GC回收一个Bitmap对象,通常对一个不用的Bitmap可以使用下面的方式:

if(bitmapObject.isRecycled()==false) //假如没有回收
        bitmapObject.recycle();

///

但是需要回收的是哪个bitmap,本人只定义了一个,而且是作为最后的返回结果的

例如你第二次截图时, 可以回收第一次截图生成的对象。

但是这里内存溢出是出在

Bitmap.createBitmap(snapShot.getWidth(), snapShot.getHeight(),
Bitmap.Config.ARGB_4444);

这一句,不是生成的bitmap。

Bitmap.createBitmap(snapShot.getWidth(), snapShot.getHeight()  这一句不正是在生成bitmap对象吗?dalvik进程可以使用的内存是一定的, 假如之前的bitmap对象占用了过多内存,当然有可能使后面的bitmap分配不成功。


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Bitmap.createBitmap内存溢出
喜欢 (0)
[1034331897@qq.com]
分享 (0)