这个问题是从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对象外其它的都没办法存取. 因为从头到尾只有一个引用变量.此变量最后只能引用到最新建立出的对象.

04-13 16:35