gpt4 book ai didi

android - 图像处理 : "dalvikvm: external allocation too large for this process" error

转载 作者:行者123 更新时间:2023-11-29 18:08:59 26 4
gpt4 key购买 nike

我有一个照片编辑应用程序。当我导入图像时,它工作正常,但打开图像进行编辑会导致它崩溃。

这是 logcat 输出:


08-04 20:56:16.973: E/dalvikvm-heap(336): 810000-byte external allocation too large for this process.
08-04 20:56:17.073: I/dalvikvm-heap(336): Clamp target GC heap from 25.289MB to 24.000MB
08-04 20:56:17.073: E/GraphicsJNI(336): VM won't let us allocate 810000 bytes

更新::

    @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);

if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK
&& null != data) {
Uri selectedImage = data.getData();
String[] filePathColumn = { MediaStore.Images.Media.DATA };

Cursor cursor = getContentResolver().query(selectedImage,
filePathColumn, null, null, null);
cursor.moveToFirst();

int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
cursor.close();

ImageView imageView = (ImageView) findViewById(R.id.ivPhoto);
chosenBitmap = superDecodeFile(new File(picturePath));
imageView.setBackgroundColor(0);
Bitmap bMap = Bitmap.createScaledBitmap(chosenBitmap, 500, 500, true);
imageView.setImageBitmap(bMap);
}

}

这是我的 onResult 代码 .. 所以 choosenBitmap 显示在 imageView ( ivPhoto )我需要使用 .recycle();所以我通过回收已经存在的 imageView 来释放一些内存..我在哪里使用 .recycle(); ?我试图改变 .setBackgroundColor(0);回收再利用();但它不起作用

最佳答案

这是一个内存泄漏错误。

您的应用分配了一个大小约为 24MB 的堆。但是您尝试编辑的图像大于堆大小。

发生这种情况是因为您没有释放内存。 Android 的 Dalvik VM 不负责 GC - 应用程序使用的 native 内存。所以,在Android中处理图片的时候,需要明确的使用recycle()。这会释放 native 内存。

更多详情:Changing ImageView content causes OutOfMemoryError

关于android - 图像处理 : "dalvikvm: external allocation too large for this process" error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11810865/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com