如何制作一个非垃圾收集的对象?

时间:2012-10-31 11:45:29

标签: java garbage-collection

  

可能重复:
  How to prevent an object from getting garbage collected?
  In java when does an object become unreachable?

我在接受采访时被问到这个问题:

  

我该怎么做才能让一个对象无法访问垃圾收集器?

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

GC将管理堆中的任何对象。您可以使一个对象始终可以访问,而不是由GC收集,但是您无法创建超出GCs范围的对象。

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

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

答案 2 :(得分:0)

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