Loading...

Java的内存--存储(1)

有次去面试,面试官突然问我这个问题,当时我只知道怎么写最优化,但是具体不知道为什么那样写,身价立马下降哦

1. 以下开发习惯,你怎么看?

  for(int i=0;i<2;i++){

    Person person = new Person();

  }

如下图:循环一次,会在堆内存中开辟一个内存空间,并且都被栈内存变量所引用(指向),所以堆内存对象一直释放不了,极度浪费内存空间

2. 可以这样解决

Person person = null;
for(int i=0;i<2;i++){
    person = new Person();

}

此处循环一次,也会在内存中new一个对象,但是栈内存中的变量永远只有一个person,所以当循环第2个时,栈内存中的变量地址会自动断开与第一个对象的连接,同时指向第二个对象,此时第一个对象没有被引用,会等待被GC回收,此处会节省很多内存空间

posted @ 2015-04-08 10:25  微笑阳光哈*_*  阅读(215)  评论(0编辑  收藏  举报