是否取消引用静态变量垃圾?

时间:2018-01-21 03:08:12

标签: java reference garbage-collection

我知道静态变量会在应用程序的整个生命周期中持续存在,如果它们没有被解除引用的话。

但是,如果取消引用静态变量垃圾?或者我只是不知道我在说什么?

由于

修改

好的,我想我明白了。没有静态对象本身,有静态引用。静态引用在整个应用程序生命周期中持续存在,并且永远不会被垃圾回收。因此,他们指向的任何对象都不会被垃圾收集。此外,超出范围的所有非静态引用都将被垃圾回收。

我的理解是否正确?

再次感谢

2 个答案:

答案 0 :(得分:1)

对象驻留在Heap中,引用可以驻留在非堆区域中的堆或Stack中。当垃圾回收器将对象标记为不可访问时,它有资格进行垃圾回收。引用可以标记为静态,对象只是对象。

答案 1 :(得分:1)

变量不是垃圾收集的,也不会被解除引用。如果没有引用,对象是垃圾收集的。 static与它无关。

修改

  

好吧,我想我明白了。

让我们看看。

  

没有静态对象本身,有静态引用。

正确。

  

静态引用在整个应用程序生命周期中都会持续存在,并且永远不会被垃圾回收。

不正确的。静态引用保存在类对象中。在某些情况下,这些类对象可以被垃圾收集。谈论被垃圾收集的参考文献毫无意义。

  

因此,他们指向的任何对象都不会被垃圾收集。

没有'因此'。当没有更多对它的引用时,对象有资格进行垃圾收集。零。 包含对其进行垃圾回收的引用的一个对象是必要的,但还不够。必须没有其他引用,垃圾收集器必须实际到达对象。

  

此外,超出范围的所有非静态引用都将被垃圾收集。

不正确的。谈论被垃圾收集的参考文献毫无意义。

  

我的理解是否正确?

没有