Java开发网 Java开发网
注册 | 登录 | 帮助 | 搜索 | 排行榜 | 发帖统计  

您没有登录

» Java开发网 » Java SE 综合讨论区 » 实战错误讨论  

按打印兼容模式打印这个话题 打印话题    把这个话题寄给朋友 寄给朋友    该主题的所有更新都将Email到你的邮箱 订阅主题
flat modethreaded modego to previous topicgo to next topicgo to back
作者 Re:一位“资深”同事为了对象重用,而写下的代码.... [Re:九佰]
informixca





发贴: 2
积分: 0
于 2009-03-17 23:36 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
九佰 wrote:
for (int i = 0; i < 10000; ++i) {

Object obj = new Object();

System.out.println("obj= "+ obj);

}

… …

上面代码的书写方式相信对你来说不会陌生,也许在以前的应用开发中你也这样做过,尤其是在枚举一个Vector对象中的对象元素的操作中经常会这样书写,但这却违反了上述规则(1),因为这样会浪费较大的内存空间,正确的方法如下所示:

… …

Object obj = null;

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

obj = new Object();

System.out.println("obj= "+ obj);

}

… …

采用上面的第二种编写方式,仅在内存中保存一份对该对象的引用,而不像上面的第一种编写方式中代码会在内存中产生大量的对象应用,浪费大量的内存空间,而且增大了系统做垃圾回收的负荷。因此在循环体中声明创建对象的编写方式应该尽量避免。


Wrong! The first code and the second code all "仅在内存中保存一份对该对象的引用" Both code has same "系统做垃圾回收的负荷". Please remember the "obj" reference is a local reference not an instance reference. On the java memory model,local reference's on the stack not heap.




联想游戏(欢迎跟贴,哈)

话题树型展开
人气 标题 作者 字数 发贴时间
28713 一位“资深”同事为了对象重用,而写下的代码.... cxp108 350 2009-01-22 17:12
24805 Re:一位“资深”同事为了对象重用,而写下的代码.... 九佰 1841 2009-01-23 17:10
23606 Re:一位“资深”同事为了对象重用,而写下的代码.... informixca 786 2009-03-17 23:36
24207 Re:一位“资深”同事为了对象重用,而写下的代码.... JiafanZhou 1592 2009-02-19 23:56
24187 Re:一位“资深”同事为了对象重用,而写下的代码.... tangming 105 2009-02-24 17:40
24174 Re:一位“资深”同事为了对象重用,而写下的代码.... cxp108 155 2009-02-25 14:58
24414 Re:一位“资深”同事为了对象重用,而写下的代码.... wuanfo 4 2009-04-08 08:44
25042 Re:一位“资深”同事为了对象重用,而写下的代码.... cxp108 415 2009-01-25 01:10
24562 Re:一位“资深”同事为了对象重用,而写下的代码.... breezehou 492 2009-02-06 09:09
24753 Re:一位“资深”同事为了对象重用,而写下的代码.... ditty 55 2009-02-11 15:08
24475 Re:一位“资深”同事为了对象重用,而写下的代码.... cxp108 269 2009-02-13 15:58
24906 Re:一位“资深”同事为了对象重用,而写下的代码.... JiafanZhou 21 2009-01-28 17:05
24852 Re:一位“资深”同事为了对象重用,而写下的代码.... cxp108 79 2009-02-01 10:31
24856 Re:一位“资深”同事为了对象重用,而写下的代码.... Biubiu 16 2009-02-03 15:11
24793 Re:一位“资深”同事为了对象重用,而写下的代码.... cxp108 120 2009-02-04 18:23
24664 Re:一位“资深”同事为了对象重用,而写下的代码.... JiafanZhou 651 2009-02-04 20:24
24744 Re:一位“资深”同事为了对象重用,而写下的代码.... menzy 52 2009-02-04 15:35
24785 Re:一位“资深”同事为了对象重用,而写下的代码.... cxp108 11 2009-02-04 18:30
24629 Re:一位“资深”同事为了对象重用,而写下的代码.... ditty 268 2009-02-13 16:42
24595 Re:一位“资深”同事为了对象重用,而写下的代码.... cxp108 366 2009-02-13 17:26
24457 Re:一位“资深”同事为了对象重用,而写下的代码.... lxh_ming 179 2009-02-14 03:06
24523 Re:一位“资深”同事为了对象重用,而写下的代码.... ditty 209 2009-02-17 13:18
24339 Re:一位“资深”同事为了对象重用,而写下的代码.... cxp108 292 2009-02-18 15:56
24209 Re:一位“资深”同事为了对象重用,而写下的代码.... JiafanZhou 3151 2009-02-18 18:18
24345 Re:一位“资深”同事为了对象重用,而写下的代码.... cxp108 216 2009-02-19 15:24
24347 Re:一位“资深”同事为了对象重用,而写下的代码.... ditty 195 2009-02-19 13:22

flat modethreaded modego to previous topicgo to next topicgo to back
  已读帖子
  新的帖子
  被删除的帖子
Jump to the top of page

   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923