Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 适当的清理/处置_Java_Android_Garbage Collection - Fatal编程技术网

Java 适当的清理/处置

Java 适当的清理/处置,java,android,garbage-collection,Java,Android,Garbage Collection,有没有办法“清理”您创建的对象和其他变量?或者它们是自动处理的,还是我的整个概念都错了?这样做的正确方式是什么?我尽量避免使用GC。在大多数情况下,只要不维护对对象(变量)的引用,它们就会被清除。类似于光标和位图的东西需要先关闭,然后才能删除,以防止内存泄漏 我认为只要您的对象创建没有超出顶部,您就不必担心GC。注意:GC是java的一部分。你无法避免 附录1:如果你真的那么担心,你可以重用变量。通过这种方式,您可以将对象创建量降至最低,但这样做会丢失该变量,并且无法存储大范围的数据。在没有内存

有没有办法“清理”您创建的对象和其他变量?或者它们是自动处理的,还是我的整个概念都错了?这样做的正确方式是什么?我尽量避免使用GC。

在大多数情况下,只要不维护对对象(变量)的引用,它们就会被清除。类似于
光标
位图
的东西需要先关闭,然后才能删除,以防止内存泄漏

我认为只要您的对象创建没有超出顶部,您就不必担心GC。注意:GC是java的一部分。你无法避免


附录1:如果你真的那么担心,你可以重用变量。通过这种方式,您可以将对象创建量降至最低,但这样做会丢失该变量,并且无法存储大范围的数据。

在没有内存管理的GC语言中进行清理的唯一方法是GC。您可以强制GC,但不建议这样做,因为GC非常好,可以更主动地将对象设置为null,以便GC进行清理

补充:

还应尽可能使对象成为本地对象,这样它们在范围外时会被GCed。

调用
System.gc()
将强制进行垃圾收集

有一个计算对您创建的对象的引用的系统。如果你循环了很多,创建了很多对象,你会在一段时间内把它们堆积起来。当处理器不执行任何操作时,系统将收集垃圾,或者在收集之前,系统将等待您需要更多可用内存。如果您已经处理了一段时间,那么由于在处理过程中发生了垃圾收集,您的性能会出现问题

请查看此页面并搜索“垃圾收集”


注意:使用应用程序上下文创建的任何内容都将一直存在到应用程序执行结束。使用活动上下文创建的任何内容都将一直存在到活动结束。这两种情况都可能导致内存泄漏

有关Android的更完整答案:


确保您查看了android的应用程序。它将帮助您避免Android中的活动泄漏。

Android的活动具有onDestroy()方法。您可以使用此方法关闭打开的连接或对话框,或关闭一些挂起的任务。

您还可以阅读有关JavaGC的内容,以便对其有更正确的理解。我推荐SCJP的书,垃圾收集章节。它很好地解释了对象何时符合垃圾收集的条件。

我相信OP是在谈论对象和活动。一般来说,您不应该调用activities onDestroy()方法。就让操作系统来处理吧。