0

可能重复:
如何防止对象被垃圾收集?
在java中,什么时候对象变得不可访问?

我在一次采访中被问到这个问题:

我应该对一个对象做些什么,以使垃圾收集器无法访问它?

4

3 回答 3

1

据我所知,垃圾收集器没有任何对象“无法访问”。然而,GC 只会收集没有更多引用指向它们的项目。

因此,为了“保护它们”,要么将它们声明为 final(常量),要么确保始终有一个指向变量的引用,例如通过在主操作循环中包含引用。

于 2012-10-31T11:47:57.473 回答
1

GC 将管理堆中的任何对象。您可以使对象始终可访问并且不被 GC 收集,但您不能使对象超出 GC 的范围。

使数据无法访问的唯一方法是将其从本机内存中的堆中取出,将其写入磁盘,或将其传递给另一个进程。

顺便说一句,即使在另一个进程中代理的分布式 RMI 对象也可以在不再使用时被 GC 清理。

于 2012-10-31T11:50:46.727 回答
0

使其包含对自身的静态引用(例如单例模式)。

于 2012-10-31T11:47:49.210 回答