这个问题是从headfirst java看到的。
需求:
一个移动电话用的java通讯簿管理系统,要求最有效率的内存使用方法.
下面两段程序的优缺点,哪个占用内存更少。
第一段:
Contact[]ca = new Contact[10];
while(x<10){
ca[x]=new Contact();
x=x+1;
}
//执行其余复杂工作
第二段:
Contact refc;
While(x<10){
refc = new Contact();
x=x+1;
}
//执行其余复杂的工作
书上的解答:
第二段有个重大缺陷.其所占用的内存是比较少,但是除了最后一个Contact对象外其它的都没办法存取. 因为从头到尾只有一个引用变量.此变量最后只能引用到最新建立出的对象.