[問題]new新物件的問題

看板java作者 (無)時間13年前 (2011/04/07 22:06), 編輯推噓3(301)
留言4則, 4人參與, 最新討論串1/3 (看更多)
請問下列三種寫法 1. MyObject obj; for(int i=0;i<10000000;i++) { obj=new MyObject(); do something...... } 2. for(int i=0;i<10000000;i++) { MyObject obj=new MyObject(); do something...... } 3. MyObject obj=new MyObject(); for(int i=0;i<10000000;i++) { obj.init(); do something...... } 其中3是我現在的寫法,但是obj.init()會花太多時間 (比new一個新的MyObject還花時間) 所以想請問1和2這兩種寫法那種比較好? 2我的議題是這樣每次都宣告一個新的obj,那上一個obj memory會回收嗎? 如果會是甚麼時候回收? ps.一開始用過2的寫法,但曾經出現過java heap size的問題... 感覺就是一直宣告MyObject obj=new MyObject()把記憶體塞爆? 1我的議題是雖然只宣告一次obj 但之後也是每次都分給他一個新的memory空間...? 和2的寫法比好像一樣? 總之我不太了解java在甚麼時候會回收不用的記憶體? 而怎樣的情況下該變數的記憶體會被認定為不在使用可以回收的? 煩請有經驗的版友指教 或者有人有推薦的書即可以介紹一下的 感謝 orz... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.164.159.249

04/07 23:16, , 1F
沒人曉得什麼時候回收吧...
04/07 23:16, 1F

04/07 23:58, , 2F
這三種寫法基本上差不多 重構一下init()可能還比較有幫助
04/07 23:58, 2F

04/11 01:52, , 3F
推樓上
04/11 01:52, 3F

04/25 16:23, , 4F
第2個做法在回圈}後 obj就會不見了 1,3在外層}不見
04/25 16:23, 4F
文章代碼(AID): #1DdSJuVk (java)
文章代碼(AID): #1DdSJuVk (java)