码迷,mamicode.com
首页 > 编程语言 > 详细

Java的内存存储(1)

时间:2015-04-08 12:23:40      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:

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

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回收,此处会节省很多内存空间

Java的内存存储(1)

标签:

原文地址:http://www.cnblogs.com/holdon521/p/4401701.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!