首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

java new 有关问题

2011-12-24 
java new 问题for(inti1i 1000i++){UserusernewUser()}这个user到底是在内存中new了1000个还是一个。

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个对象

热点排行