我正在写一个马里奥风格的游戏,在表面视图上绘制一组瓷砖。我创建了一个Tile()类,它包含一个公共Bitmap和一个方法,如果有一个动画磁贴,则返回一个帧。该类用于公共静态数组。
在增加tile位图的数量(目前为25)时,我在eclipse中获得了越来越多的这些消息:
D / dalvikvm(1819):GC_CONCURRENT释放414K,43%免费3181K / 5568K,暂停73ms + 92ms,总计224ms开始变得非常迟钝。难道我做错了什么?我希望将位图保留在内存中,因为它们经常被使用。
[编辑:] 我想出了那条线
returnBitmap = Bitmap.createBitmap(bmpRight, pixelPos, 0, spriteBmpWidth, spriteBmpHeight);
导致这个。有没有办法避免它? :/
答案 0 :(得分:0)
增加JVM的堆大小,对于Java游戏来说,5M可能非常小,如果你将BitMaps保留在内存中,那么就可以了。
使用-Xmx100m
运行Java程序以将heapSize增加到100M
您看到的消息来自JVM垃圾收集器释放内存时的调试日志。
[编辑]一开始并没有看到你在Android上: - /
答案 1 :(得分:0)
为了让您的图像保持活力,您需要将它们放在课堂上,例如:
public class A{
Bitmap a;
Bitmap b;
public void ...
}
当你的A级使用时,并且GC不会触碰它们。 如果您将在方法中创建位图 - 它们将在方法运行时保持活动状态。像这样:
public void test()
{
Bitmap a;
Bitmap b;
} // on this moment GC will delete images from memory
您可以在this link
上阅读有关GC工作的更多信息