永恒的java对象

时间:2010-12-28 12:36:19

标签: java

是否可以创建一个在JVM未关闭之前处于活动状态的对象?或者是否有任何java对象在JVM未关闭之前保持活动状态。

4 个答案:

答案 0 :(得分:6)

您可以相当确定static字段不会被垃圾回收。有关详细信息,请参阅this question

答案 1 :(得分:1)

在JVM关闭之前,程序的主线程始终处于活动状态。

你为什么问这个问题?

答案 2 :(得分:0)

当然。您所要做的就是确保通过运行代码可以访问该对象,它不会死亡。 GC只收集代码中没有引用的内容。

在您的某个类中,单个静态引用(您永远不会设置为null)应足以保证只要应用程序正在运行,该对象就会存在。但是,只要您能够看到并使用该对象,它就应该坚持到底。 (有一个名为“弱引用”的概念使得并不总是为真,但如果你正在使用它们,那么你就不会问这个问题了。)

答案 3 :(得分:0)

每个JVM实例只有一个java.lang.Runtime实例。在开始时创建并一直持续到结束。如果你想要永恒,那么有两种方法:

  1. 覆盖protected void finalize() throws Throwable;并自我引用其中的对象。
  2. 保持对您的对象的引用