Java 对于垃圾收集,如果我们在方法末尾使用后将对象设为null并清除收集,这是一个好主意吗

Java 对于垃圾收集,如果我们在方法末尾使用后将对象设为null并清除收集,这是一个好主意吗,java,multithreading,groovy,garbage-collection,jvm,Java,Multithreading,Groovy,Garbage Collection,Jvm,对于数据加载,我使用groovy脚本。在这里我使用多线程概念。但当我在某个时间间隔后开始数据加载时,数据加载停止,JVM开始进行垃圾收集。 我的问题是,在方法末尾使用后,在方法中将对象设置为null和clear集合是否是一个好主意 其他最好的方法也会出现 提前感谢。这对垃圾收集没有影响。一旦您的方法结束并且不再存在对对象/集合的引用,GC将能够清除它们。如果对象/集合变得不可访问,因为您取消了本地保存上次引用的引用或方法,并且该引用或方法已完成,则不会产生任何影响。这对垃圾收集没有影响。一旦您的

对于数据加载,我使用groovy脚本。在这里我使用多线程概念。但当我在某个时间间隔后开始数据加载时,数据加载停止,JVM开始进行垃圾收集。 我的问题是,在方法末尾使用后,在方法中将对象设置为null和clear集合是否是一个好主意

其他最好的方法也会出现
提前感谢。

这对垃圾收集没有影响。一旦您的方法结束并且不再存在对对象/集合的引用,GC将能够清除它们。如果对象/集合变得不可访问,因为您取消了本地保存上次引用的引用或方法,并且该引用或方法已完成,则不会产生任何影响。

这对垃圾收集没有影响。一旦您的方法结束并且不再存在对对象/集合的引用,GC将能够清除它们。如果对象/集合变得不可访问,这没有什么区别,因为您取消了本地保存上次引用的引用或方法已完成。

这取决于您用于引用对象的变量类型

  • 如果该变量是该方法的局部变量,并且没有对该对象的其他引用,那么将该变量设置为null并没有帮助,因为它无论如何都会超出范围
  • 如果变量是类的一个成员,并且您运行该方法的对象将停留一段时间,那么如果您已经使用完该对象,则将该变量调零将产生不同;因为变量仍然在类中的代码范围内。如果存在可以通过某种方式访问的对象引用,则不会对该对象进行垃圾收集

这取决于用于引用对象的变量类型

  • 如果该变量是该方法的局部变量,并且没有对该对象的其他引用,那么将该变量设置为null并没有帮助,因为它无论如何都会超出范围
  • 如果变量是类的一个成员,并且您运行该方法的对象将停留一段时间,那么如果您已经使用完该对象,则将该变量调零将产生不同;因为变量仍然在类中的代码范围内。如果存在可以通过某种方式访问的对象引用,则不会对该对象进行垃圾收集

在多线程处理中,根据变量的使用范围,尝试全局定义变量,并尽可能将其写为局部变量,同时在方法中和循环内部或if条件下写入

在多线程处理中,根据变量的使用范围,尝试全局定义变量,并尽可能将其作为局部变量写入方法中和循环内部,或if条件

但当我使用Java虚拟虚拟机和Jconsole监视虚拟机时,我发现。差异通常在一分钟内平均执行4次GC,但当我在方法末尾强制使其为null和clear时,则在一分钟内平均执行3次GC。您能提供我们正在讨论的代码吗?本地方法引用是对对象/集合的唯一引用吗?但是当我使用Java虚拟VM和Jconsole监视VM时,我发现了。差异通常在一分钟内平均执行4次GC,但当我在方法末尾强制使其为null和clear时,则在一分钟内平均执行3次GC。您能提供我们正在讨论的代码吗?本地方法引用是对对象/集合的唯一引用吗?但是当我使用Java虚拟VM和Jconsole监视VM时,我发现了。差异通常平均一分钟内执行4次GC,但当我在方法末尾强制将其设置为null和clear时,GC将继续执行,平均每分钟执行3次。但当我使用Java虚拟VM和Jconsole监视VM时,我发现。差异通常在一分钟内平均执行4次GC,但当我在方法结束时强制使其为空并清除时,则在一分钟内平均执行3次GC。