2015-05-09 48 views
1

从1代码中加载20个图像后,Android手机中的任务管理器显示4mb。从第二个代码显示9mb。Android中奇怪的内存分配

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

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

回答

0

尝试改变第二代码:

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

所以,您可以尝试检测内存消耗程序y

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