【问题标题】:Destroy java object销毁java对象
【发布时间】:2015-12-04 11:05:15
【问题描述】:

我们可以在 C++ 中删除对象

delete <object>

如何在没有内置垃圾收集器的情况下删除 java 中的对象。 如果我执行

object = null

据我所知,它不会释放内存。如何释放空间。

【问题讨论】:

  • 您无法释放内存。它不在你的控制之下。您可以通过不对其进行任何引用来使其可用于垃圾收集。
  • 你不应该以这种方式比较c++和java,java有它自己的使用GC释放内存的方式。有人说它好有人讨厌它,这只是偏好问题

标签: java class oop object memory


【解决方案1】:

当你满足以下条件时,java 中的对象就有资格进行垃圾回收:

  1. 删除所有对其的引用。
  2. 离开声明它的块

当它符合条件时,JVM 会注意在适当的时候释放该对象使用的内存。

手动调用System.gc() 根本不是一个好主意。任何依赖它来保证正确性的代码肯定会被破坏;任何依赖它来实现性能的东西都很可能被破坏。 因此,简而言之,程序员无法直接控制内存分配/释放。

【讨论】:

  • 有一个警告:当您使用静态资源时,规则会有所不同。
  • @jwenting 绝对正确,我没有提到它假设 OP 会意识到这一点。
【解决方案2】:

你不需要。

垃圾收集器会在任何时候做这件事。

只要不再有对对象的实时引用,它就会被释放......然后:-)

【讨论】:

    【解决方案3】:

    在 Java 中没有像在 c++ 中那样的“内存丢失”。您无需释放此内存,垃圾收集器会为您完成。

    您可以在此链接中找到有关垃圾收集器的更多信息:http://www.cubrid.org/blog/dev-platform/how-to-tune-java-garbage-collection/

    也许这个链接Is there a destructor for Java? 可能对你有用。

    【讨论】:

      猜你喜欢
      • 2012-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-11
      • 2013-03-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多