我最近遇到过一些情况,其中堆大小增加而没有执行GC 示例 - 开始时,可用空间的746KB(使用Runtime.getRuntime()。freeMemory()进行评估)。分配大小为512 * 512(RGB_565)的位图需要512KB。没有进行去碎片,堆大小增加了。堆中的可用空间减少了3 KB。类似的图案连续重复20次。这些分配之间没有打印GC消息。每个alloc需要大约1ms的时间。
for (int i = 0; i<20; i++) {
long start = System.currentTimeMillis();
System.out.println("Free space:"+Runtime.getRuntime().freeMemory());
System.out.println("Heap size:"+Runtime.getRuntime().totalMemory());
list.add(Bitmap.createBitmap(512, 512, Bitmap.Config.RGB_565));
System.out.println(System.currentTimeMillis()-start);
}
Dalvik在增加堆大小之前总是执行GC吗?
提前致谢。如果需要更多信息,请告诉我。