2015-05-09 88 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);