当堆逐渐填满时,在继续我的游戏超过8次之后,我得到了OutOfMemory错误。在使用MAT分析我的游戏堆时,我了解到以下两个原因:
1) "“加载的一个android.graphics.Bitmap实例占用6554,944 (35.34%)个字节。内存累积在由"“加载的"byte[]”的一个实例中。

关键词android.graphics.Bitmap byte[]
2) "“加载的类"android.content.res.Resources”占用6446,248 (34.76%)字节。内存累积在由"“加载的"java.lang.Object[]”的一个实例中。

关键词java.lang.Object[] android.content.res.Resources
请建议一个解决方案
发布于 2014-11-01 16:13:42
尝试回收镜像,例如:
if(image!= null) {
((BitmapDrawable)image.getDrawable()).getBitmap().recycle(); //here
image= (ImageView) view.findViewById(R.id.image);
image.setImageResource(yourresource);
}
else {
image= (ImageView) view.findViewById(R.id.image);
imageView.setImageResource(yourresource);
}发布于 2015-12-10 07:41:21
对于在游戏(如imageButtons等)中大量使用位图的情况,请确保您没有让活动保持活动状态。
至于资源本身,你会读到很多关于drawable-nodpi的东西,但是如果你混合了编程布局和xml布局调整,你会想要确保你在所有的drawable-?dpi文件夹中都有资产,这对imageButtons来说有很大的不同。
另外,不要在代码中使用setmaxheight,而要使用layoutparams height。在imageButtons上,这不止一次杀死了我的记忆。
如果你在代码中将pngs加载到视图中,那么使用Glide或Picasso,这样可以省去很多麻烦:)
https://stackoverflow.com/questions/26687294
复制相似问题