如果开发人员尝试访问垃圾回收对象会发生什么?

时间:2017-11-05 10:04:27

标签: java memory memory-management garbage-collection

如果开发人员尝试访问垃圾回收对象,会发生什么?更具体地说,假设开发人员已经创建了一个对象但是忘记使用它,那么在什么时候以及在什么基础上它将被垃圾收集,如果它被垃圾收集,那么如果开发人员试图访问它会发生什么?

1 个答案:

答案 0 :(得分:1)

  

如果开发人员尝试访问垃圾回收对象会发生什么?

不可能发生。

如果(纯Java)程序能够访问对象,则该对象按定义可以访问。如果某个对象可以访问,则无法进行垃圾回收。

警告是纯粹的Java"。如果您在本机代码中执行令人讨厌的事情,则可以安排Java代码尝试使用对不再存在的对象的引用...或者已经由GC重定位的对象。如果发生这种情况,则行为未指定,但您可能会使JVM崩溃。

大多数Java垃圾收集器通过查找仍可访问的对象并将它们复制到另一个" space"来工作。完成后,JVM将开始分配与已删除或重定位对象使用的空间重叠的新对象。 A" JVM恐慌"如果使用旧引用,则可能(并且是最好的)结果。在最坏的情况下,应用程序可能会出现不可预测的错误"价值并在没有检测到的情况下继续进行。