Java中的内存管理

Java中的内存管理,java,memory-management,Java,Memory Management,如何在Java中手动删除对象?是否有类似于obj.delete()或obj.kill()的方法只需将空值赋给它即可 让GC来处理这个问题 obj = null; 没有真正的办法。Java有一个特殊的垃圾收集器,它可以为您实现这一点。一旦您的对象没有任何引用,垃圾回收器就会在某个时候将其拾取并销毁 发件人: 垃圾收集器 对象符合垃圾回收的条件 当没有更多时收集 对该对象的引用。工具书类 保存在变量中的是 通常在变量消失时删除 超出范围。或者,您可以显式地 通过设置删除对象引用 将变量转换为特殊值

如何在Java中手动删除对象?是否有类似于
obj.delete()
obj.kill()

的方法只需将空值赋给它即可

让GC来处理这个问题

obj = null;

没有真正的办法。Java有一个特殊的垃圾收集器,它可以为您实现这一点。一旦您的对象没有任何引用,垃圾回收器就会在某个时候将其拾取并销毁

发件人:

垃圾收集器

对象符合垃圾回收的条件 当没有更多时收集 对该对象的引用。工具书类 保存在变量中的是 通常在变量消失时删除 超出范围。或者,您可以显式地 通过设置删除对象引用 将变量转换为特殊值 无效的记住,一个程序可以有 对同一文件的多个引用 对象对对象的所有引用 必须在对象被删除之前删除 有资格进行垃圾收集


Java如此流行的主要原因之一是垃圾收集。您不必担心分配或取消分配内存。也就是说,如果您想删除一个对象,只需将对该对象的所有引用设置为null,一旦垃圾收集器运行,该对象将被处理。

您必须担心关闭资源,如文件、套接字、数据库连接等。。。为此,您应该在try/finally块中执行此操作。

无法删除对象。当对象没有更多引用时,Java的垃圾收集器将自动执行此操作

但是,一旦通过调用删除了对对象的所有引用,就可以运行垃圾收集器。请仔细阅读该方法的文档。它只保证尽最大努力删除所有标记为删除的对象

你也应该进行这些讨论


我们无法手动删除任何对象!!!JVM会小心的。你的答案很清楚,但可能不是你想要的。这个问题背后还有什么你没有提到的吗?为什么你有删除对象的冲动?你有泄漏的问题吗?请详细说明。像Java这样的托管语言的全部要点是您不必删除对象。。。所以,如果你真的需要控制它,你必须有非常具体的需求。所以我同意赫弗南的观点。。。您需要详细说明为什么需要这样做。可能还有其他对对象的引用,所以这不是事实。而且,大多数人现在建议不要显式空值,最好让JVM处理对象。这不是必需的,因为Java的垃圾收集器不是那么原始,它只考虑引用计数。"... 一旦垃圾收集器运行,对象就可以被处理。“没有任何东西可以保证在每次收集时收集所有符合条件的对象。天哪..*等待大量关于System.gc()如何根本不“调用”垃圾收集器的评论*…希望有人不会提到System.gc()编辑了我的答案,你能在这里给我发一个全面的链接吗?我会删除这个答案。其中之一是: