如何在android中释放对象?

时间:2012-12-24 03:29:04

标签: java android

  

可能重复:
  Java garbage collection

我知道在处理完毕后我们必须在C,C ++中释放对象以获取内存。但是,我不知道如何在java和android中释放对象。仅仅将null分配给对象就足够了吗?

5 个答案:

答案 0 :(得分:3)

在Java中,没有必要释放对象。

Java有一个内置的垃圾收集器,它可以在需要时运行并清除所有不再使用的资源以释放内存。 java开发人员可以调用java运行时使用System.gc();来运行垃圾收集器,但这只是对运行时的建议,可能并不总是导致它被运行。

如果您使用的是读者和图片,请务必在适用的地方致电.recycle().close()

答案 1 :(得分:2)

一个简单的java对象(例如模型对象)可以被垃圾收集器释放 IF 其他对象没有引用它。

如果我是你,不要太信任垃圾收集器,因为有一些对象你必须释放,其中一个是Bitmap对象

Bitmap在您的Android应用中占用更多内存。

Bitmap b = createLargeBitmap();
Bitmap b2 = b;

如果删除对该对象的所有引用并让垃圾收集器将其删除

b = null;
b2 = null;

您可能会收到内存泄漏或OutOfMemory错误。

所以你需要调用recycle()来完全释放位图。

b.recycle();
b = null;
b2 = null;

//抱歉我的错误语法:)

答案 2 :(得分:1)

在大多数情况下,将var设置为null就足够了。回答问题的一个更好的答案是如何泄漏记忆,详细解释在this帖子中。

答案 3 :(得分:1)

内存释放由Java垃圾收集器自动完成。您无法通过代码强制垃圾收集器释放内存。

调用System.gc()并不能保证垃圾收集器能够 RUN和FREE 内存,最终决定由Java运行时决定。

答案 4 :(得分:0)

Android(使用Java语言)是一个垃圾收集环境,这意味着虚拟机将自动删除不再有任何引用的对象。

因此,您应该问的问题是:如何确保您的程序不会占用太多内存。这通常是通过确保您不在内存数据结构中放置太多对象,将信息保存到文件系统等中来实现的。