【发布时间】:2018-01-21 03:08:11
【问题描述】:
我知道如果不取消引用静态变量,它们会在应用程序的整个生命周期中持续存在。
但是如果静态变量被取消引用,它们会被垃圾收集吗?还是我只是不知道我在说什么?
谢谢
编辑
好的,我想我明白了。 本身没有静态对象,只有静态引用。静态引用在整个应用程序生命周期中持续存在,并且永远不会被垃圾收集。因此,它们指向的任何对象都不会被垃圾回收。此外,所有超出范围的非静态引用都将被垃圾收集。
我的理解正确吗?
再次感谢
【问题讨论】:
-
“我知道如果不取消引用静态变量,它们会在应用程序的整个生命周期中持续存在。” - 这个说法是错误的。可达性(和 GC)与跟随指针(取消引用)的操作没有直接关系。
-
变量从不 GC'd。只有对象是。你以这种方式问这个问题是一个问题。
-
确实如此。 (我没有注意到......)这个错误表明你不了解变量和对象之间的区别。这真的令人担忧。
-
“是的,我确实理解对象和变量之间的区别。” - 那么你为什么要问变量是否可以被垃圾回收呢? (如果您真的了解其中的区别,那么这个问题显然是荒谬的。)
标签: java reference garbage-collection