几天前,我得到了solution检查具有config_alpha_8的两个位图之间的冲突。但是在使用它时我注意到我的应用程序开始变得很奇怪,当我检查日志时我注意到垃圾收集器每毫秒发送垃圾邮件
我尝试删除几行,并找出导致垃圾收集器进行炒作的原因是这些行:
byte[] pixelData = getPixels(bitmap1);
byte[] pixelData2 = getPixels(bitmap2);
调用了这个函数:
public byte[] getPixels(Bitmap bmp) {
int bytes = bmp.getRowBytes() * bmp.getHeight();
ByteBuffer buffer = ByteBuffer.allocate(bytes);
bmp.copyPixelsToBuffer(buffer);
return buffer.array();
}
为什么呢?我该怎么办才能让它停下来?
答案 0 :(得分:1)
您正在分配大量连续的内存块(即byte[]
)。根据图像的大小,这可能会占用大量可用堆。
如果您要进行大量此类操作,可能需要考虑将byte[]
固定大小的实例汇集起来以供重用。