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

问题描述 投票:0回答:3

我使用andengine开发游戏。在J2me游戏退出时,我将所有对象设置为null

即:

Image img;
Sprite s1;

When exit application , 

img=null;
s1=null;

在android中,我将使用System.gc(),或者我需要在退出应用程序时将所有纹理,textureRegion和sprite设为null?

java android garbage-collection andengine
3个回答
5
投票

我认为你不应该明确地打电话给

System.gc()
。 Android 操作系统可以解决这个问题。

“从您的应用程序调用

System.gc()
就像从您的家中提供电力连接来点亮整个社会的灯光”

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


2
投票

Java 垃圾收集应该解决这个问题。你不需要这样做。

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

System.gc()只是向JVM暗示建议进行垃圾收集,但Java是按照自己的意愿运行它的。


0
投票

在存在垃圾收集器的Android 中,手动调用 GC 从来都不是好习惯。 GC 是围绕启发式算法组织的,这些算法在留给自己的设备时效果最佳。手动调用 GC 通常会降低性能。

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

最好花更多的精力来避免不必要的对象创建(例如在循环内创建对象)..

看问题

Android 中的垃圾收集器

© www.soinside.com 2019 - 2024. All rights reserved.