我正在使用andengine为Android平台开发游戏。 我过去常常通过应用程序检查内存使用情况。
这是使用spritesheets之前的内存使用情况
后来我开始了解SpriteSheet和Andengine的TexturePackerExtension
我尝试在我的应用中使用它。我创建了一个包含整个游戏所需图像的spritesheet。
当我加载它时,我的堆增加了比前一个堆。
我假设使用SpriteSheet后堆会减少
出了什么问题?
我该怎么做才能使用SPriteSheet和TexturePackers管理内存。
软件使用:
[编辑] [解决]
总堆似乎不是一个更大的问题。 我终于设法控制了总堆内存。
我简单地为实际游戏资源创建了2个spritesheets 1,另一个用于菜单资源。我只加载当前需要的spritesheet。在加载另一个spritesheet之前我用来卸载以前的spritesheet等等。
我希望这是一种正确的方法。
创建2个spritesheets后,我的堆内存永远不会超过18 mb:D
答案 0 :(得分:1)
您的总堆容量(可能)暂时更大,因为spritesheet是一大块数据,在发送到OpenGL纹理之前必须在很短的时间内解码到堆内存中。你分配的堆几乎完全相同!所以这里没有泄漏或任何东西!
OpenGL纹理不计入您的Java堆。