是否可以创建一个在JVM未关闭之前处于活动状态的对象?或者是否有任何java对象在JVM未关闭之前保持活动状态。
答案 0 :(得分:6)
您可以相当确定static
字段不会被垃圾回收。有关详细信息,请参阅this question。
答案 1 :(得分:1)
在JVM关闭之前,程序的主线程始终处于活动状态。
你为什么问这个问题?
答案 2 :(得分:0)
当然。您所要做的就是确保通过运行代码可以访问该对象,它不会死亡。 GC只收集代码中没有引用的内容。
在您的某个类中,单个静态引用(您永远不会设置为null)应足以保证只要应用程序正在运行,该对象就会存在。但是,只要您能够看到并使用该对象,它就应该坚持到底。 (有一个名为“弱引用”的概念使得并不总是为真,但如果你正在使用它们,那么你就不会问这个问题了。)
答案 3 :(得分:0)
每个JVM实例只有一个java.lang.Runtime
实例。在开始时创建并一直持续到结束。如果你想要永恒,那么有两种方法:
protected void finalize() throws Throwable;
并自我引用其中的对象。