java - 对象究竟在什么时候可用于垃圾回收?

标签 java garbage-collection

我正在与我的应用程序的内存不足问题作斗争,并试图解决垃圾收集问题。如果我有以下代码:

public void someMethod() {
   MyObject myObject = new MyObject();
   myObject.doSomething();  //last use of myObject in this scope
   doAnotherThing();
   andEvenMoreThings();
}

所以我的问题是,在 myObject.doSomething() 这是最后一次使用这个对象之后,或者在 myObject.doSomething() 之后,或者在完成 someMethod() 它在哪里超出范围? IE。垃圾收集是否足够聪明,可以看到虽然局部变量仍在范围内,但其余代码不会使用它?

最佳答案

“超出范围的地方”

public void someMethod() {
   MyObject myObject = new MyObject();
   myObject.doSomething();  //last use of myObject in this scope
   myObject = null; //Now available for gc
   doAnotherThing();
   andEvenMoreThings();
}

关于java - 对象究竟在什么时候可用于垃圾回收?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8940944/

相关文章:

c++ - 在 STL 中使用引用计数的数据结构有哪些行为异常?

Java GC 问题 : How could an object become unreachable while one of its methods is still being executed?

java - Android - 如何在 setColor 中更改颜色

java - 如何中断或停止当前正在运行的 quartz 作业?

Java ASM 字节码修改——改变方法体

java - 为什么这个 Spring MVC Controller 返回损坏的 UTF-8 字符串?

java - Java 自动堆增加 "transparent"还是有成本?

unity3d - 有没有办法在 Unity 中准确测量堆分配以进行单元测试?

java - 如何使用纯Java(包括日期和小数类型)生成Parquet文件并将其上传到S3 [Windows](无HDFS)

.net - 易碎队列和完成队列