Java System.gc将在android(Andengine)中工作

Java System.gc将在android(Andengine)中工作,java,android,garbage-collection,andengine,Java,Android,Garbage Collection,Andengine,我正在使用andengine开发一个游戏。在J2me游戏退出时,我将所有对象设为空 即: 在android中,我将使用System.gc,或者我需要将所有纹理、textureRegion和sprite设置为make为null,当退出appliaction时?Java垃圾收集应该负责这一点。你不需要那样做 但是,我会关闭打开的连接、文件句柄等 只是给JVM一个提示,建议进行垃圾收集,但是Java是按照自己的意愿运行的。在Android中,在垃圾收集器存在的情况下,手动调用GC从来都不是好的做法。G

我正在使用andengine开发一个游戏。在J2me游戏退出时,我将所有对象设为空

即:


在android中,我将使用System.gc,或者我需要将所有纹理、textureRegion和sprite设置为make为null,当退出appliaction时?

Java垃圾收集应该负责这一点。你不需要那样做

但是,我会关闭打开的连接、文件句柄等

只是给JVM一个提示,建议进行垃圾收集,但是Java是按照自己的意愿运行的。

在Android中,在垃圾收集器存在的情况下,手动调用GC从来都不是好的做法。GC是围绕启发式算法组织的,当留给他们自己的设备时,启发式算法工作得最好。手动调用GC通常会降低性能

偶尔,在一些相对罕见的情况下,您可能会发现某个特定的GC出错,手动调用GC可能会改善性能。这是因为不可能实现在所有情况下都能以最佳方式管理内存的完美GC。这种情况很难预测,并且取决于许多微妙的实现细节。好的做法是让GC自己运行;对GC的手动调用是例外情况,只有在实际性能问题得到适当见证后,才应该设想这种情况

最好花更多的精力避免不必要的对象创建,比如在循环中创建对象


看看这个问题

我认为您不应该显式地调用System.gc。安卓操作系统解决了这个问题

从你的应用程序中调用System.gc就像从你的家中提供电力连接来点亮整个社会的灯

我的意思是,它会减慢你的应用程序清理系统中所有垃圾的速度


N_JOY.

在退出时不需要执行这两项操作。我遇到过这样的情况:调用System.gc确实可以防止在外部堆中位图很紧时发生OutOfMemory错误,因此在某些情况下它肯定会有所帮助。理想情况下,高效地加载和卸载位图可以避免这种需要,但根据我最近的经验,当许多大型图像需要加载到具有较小堆限制的设备上时,这可能非常困难。我不相信System.gc就像引用中所说的那样毫无意义,它更像是一个不间断的电源,有足够的能量为房子供电一分钟。
Image img;
Sprite s1;

When exit application , 

img=null;
s1=null;