Android 游戏中的记忆管理

Android 游戏中的记忆管理,android,memory,garbage-collection,Android,Memory,Garbage Collection,我的游戏在我的手机中消耗了大量内存,如何解决这个问题 我尝试在final中保留我的objects=null,并调用垃圾收集器,但没有解决 游戏必须每一分钟创建一个新的精灵a。精灵中消耗大量内存的是它的纹理,而不是对象本身,正如我在android的cocos2d源代码中看到的那样,它们由TextureManager通过匹配文件名进行缓存(因为IO很慢)。因此,如果在较长时间内不需要纹理(或者重新加载不会造成伤害),请记住使用TextureManager.removeTexture()释放纹理(主要

我的游戏在我的手机中消耗了大量内存,如何解决这个问题

我尝试在final中保留我的
objects=null
,并调用垃圾收集器,但没有解决


游戏必须每一分钟创建一个新的精灵a。

精灵中消耗大量内存的是它的纹理,而不是对象本身,正如我在android的cocos2d源代码中看到的那样,它们由TextureManager通过匹配文件名进行缓存(因为IO很慢)。因此,如果在较长时间内不需要纹理(或者重新加载不会造成伤害),请记住使用TextureManager.removeTexture()释放纹理(主要是大纹理)

你也应该考虑为这些精灵实现一个AN。这样,您就可以简单地重用未使用的实例,而不是为了下一刻创建一个新实例而丢弃它们


如果您不知道的话,Android SDK附带了一个名为(现在也集成在ADT中)的工具来分析内存使用情况。问题可能不在您的预期范围内。

在精灵中消耗大量内存的是它的纹理,而不是对象本身,正如我在android的cocos2d源代码中看到的,它们由TextureManager通过匹配文件名进行缓存(因为IO很慢)。因此,如果在较长时间内不需要纹理(或者重新加载不会造成伤害),请记住使用TextureManager.removeTexture()释放纹理(主要是大纹理)

你也应该考虑为这些精灵实现一个AN。这样,您就可以简单地重用未使用的实例,而不是为了下一刻创建一个新实例而丢弃它们


如果您不知道的话,Android SDK附带了一个名为(现在也集成在ADT中)的工具来分析内存使用情况。问题可能不是你所期望的。

你每分钟都在编写创建精灵的游戏,但我认为创建新的精灵会取代精灵图像。如果您没有使用下面的代码对该精灵执行任何功能定位操作

spritetest.setTexture(CCTextureCache.sharedTextureCache().addImage("newimage.png"));

你已经写了你的每分钟创建精灵的游戏,但我认为创建新的精灵取代了精灵的形象。如果您没有使用下面的代码对该精灵执行任何功能定位操作

spritetest.setTexture(CCTextureCache.sharedTextureCache().addImage("newimage.png"));

您必须清理之前创建的cocos2d精灵或对象

removeChild(sprite1, true);

之后,您可以为该对象指定null

您可以调用该方法

CCDirector.sharedDirector().purgeCachedData();

删除所有缓存的cocos2d缓存数据。

您必须清理先前创建的cocos2d精灵或对象

removeChild(sprite1, true);

之后,您可以为该对象指定null

您可以调用该方法

CCDirector.sharedDirector().purgeCachedData();
删除缓存的所有cocos2d缓存数据