在循环中定义java对象,我是否需要使用null来释放内存?

tna*_*ser 1 java garbage-collection object

如果我有一个循环并在其中创建一个新对象

for ( int i ; i < 10 ; i++)
{
  MyObject obj = new MuObject();
   obj.use();
}
Run Code Online (Sandbox Code Playgroud)

我是否需要在开头或结尾的循环内说obj = null以释放该对象使用的内存,或者使用"new"将该对象发送到GC?我可以在内存使用方面看到这个吗?

更新:所以如果我有大对象和长循环,我应该将对象分配为null还是不?

Daw*_*ood 5

检查一下:http://javarevisited.blogspot.com/2011/04/garbage-collection-in-java.html

"如果从任何活动线程或任何静态引用无法访问对象,则该对象有资格进行垃圾收集或GC".循环结束后,您在循环内创建的对象没有任何指向它们的外部引用,并且有资格进行垃圾回收.

编辑:
如果要查看内存使用情况,可以使用具有此功能的IDE来分析应用程序.例如,NetBeans有一个很好的界面,显示对象分配的实时内存使用情况.

编辑2:
"所以,如果我有大对象和长循环,我应该将对象分配为null还是否?"
不,你不需要这样做.一旦循环的一个迭代完成,也有在该迭代创建的,因此它并不重要,你有一个或长或短回路中的任何对象没有活动的引用.