日期:2014-05-20  浏览次数:20615 次

java new 问题
for(int   i=1;i <1000;i++)
{
      User   user   =   new   User();


}
这个user到底是在内存中new   了1000个还是一个。

------解决方案--------------------
for循环执行完成后比完成前在堆里多占用了999了User的空间,但由于每执行一次,下一次这个新创建的User对象就不可再访问,有可能会被内存回收线程回收掉。
所以循环执行前后内存倒底占用多了多少,是个不定值。
------解决方案--------------------
user这个引用只有一个, 但是每次循环都在堆内存里新创建了一段空间, 然后把user这个引用指向新创建的内存空间, 所以,最后user这个引用是指向最后创建的那段空间的, 所以最后你只能获得一个对象, 但是在这个过程中, 确实创建了999个对象,只不过,前面的998个在循环结束的时候没有引用指向他们,而且它们什么时候被回收,这个就不讨论了
所以循环结束后可以使用的对象,只有一个, 但是这个过程是创建了999个对象