android中奇怪的内存分配

时间:2015-05-09 17:52:59

标签: java android android-studio garbage-collection

从1个代码加载20个图像后,android手机中的任务管理器显示4mb。从第二个代码开始显示9mb。

但是,在这两种情况下,即使在调用垃圾收集器之后,Android Studio也会显示相同的2.9mb,分配1.8mb。为什么会这样?哪一个是真正的堆?

1代码:

img = BitmapFactory.decodeResource(context.getResources(), R.drawable.img);

2代码:

img = BitmapFactory.decodeResource(context.getResources(), R.drawable.img);
img = Bitmap.createScaledBitmap(img,
            (int)(img.getWidth() * scale), (int)(img.getHeight() * scale), false);

PS:比例变量== 1

1 个答案:

答案 0 :(得分:0)

尝试将第二个代码更改为:

img1 = BitmapFactory.decodeResource(context.getResources(), R.drawable.img);
img2 = Bitmap.createScaledBitmap(img1,
            (int)(img1.getWidth() * scale), (int)(img1.getHeight() * scale), false);
img1.recycle();

因此,您可以尝试检测内存消耗programaticaly

MemoryInfo mi = new MemoryInfo();
ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
activityManager.getMemoryInfo(mi);