java - 静态变量设置为 null 可用于 GC?

标签 java static

当我将静态变量设置为 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/

相关文章:

java - 有没有办法从 Doxygen 输出中排除包级函数和成员?

java - 如何在 JUnit 中等待 @JMSListener 注解的方法完成

java - 如何根据已定义变量的值定义列表名称

java - 将 Google Directory API 与 SSH 隧道结合使用

java - 将时间跨度(long 和 TimeUnit)添加到 java.util.Date 的最佳方法是什么?

Java静态内部类返回null

c++ - C++ 中无法解析的外部符号(使用 VS2017)

php - 函数中的静态变量是否初始化为NULL(手动)?

java - 如何在android 6及以上版本中使用permissionDispatcher库在运行时请求 `onResume()`中的权限

java - 从它的父级获取静态上下文中的测试类名称