当我将静态变量设置为 null 时,将可用于 GC 吗?
静态整数 jfv;
boolean someMethod(){
jfv =10;
//use for some purpose
jfv = null
return true;
}
这样的话,jfv会被GC选中吗?
编辑:
有拼写错误,问题是静态对象在分配 null 值后是否可用于 GC。
感谢大家的回复
最佳答案
您不能将 null 分配给 int
变量。
但无论如何,你试图做的事情都是错误的。
int
type 是原始类型...这意味着 int
变量在 Java 堆中永远不会独立存在。因此没有任何东西可以被垃圾收集。
现在如果jfv
是引用类型(即它的类型是类或数组类型),然后分配 null
给它:
- 是合法的,并且
- 可能产生
jfv
的对象指成为垃圾收集的候选者。
请注意,最后一个项目符号是合格的:
如果对象
jfv
指的是从其他地方可达,那么它就不会成为垃圾回收的候选对象。某些东西是垃圾收集的候选者这一事实并不意味着它将被垃圾收集。这取决于收集器何时运行......以及其他一些事情。
最后,尝试影响/控制 Java 对象何时被垃圾回收通常是一个坏主意。让垃圾收集器来处理吧。但也有一些异常(exception);阅读有关 Java 内存泄漏的信息。
static
的使用不正确变量是内存泄漏的常见原因......但随机分配 null
静态分析并不是解决方案。
关于java - 静态变量设置为 null 可用于 GC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26920883/