作者tofuflower (無)
看板java
標題[問題]new新物件的問題
時間Thu Apr 7 22:06:46 2011
請問下列三種寫法
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
→ rofellosx:沒人曉得什麼時候回收吧... 04/07 23:16
推 luoqr:這三種寫法基本上差不多 重構一下init()可能還比較有幫助 04/07 23:58
推 tomap41017:推樓上 04/11 01:52
推 MephistoH:第2個做法在回圈}後 obj就會不見了 1,3在外層}不見 04/25 16:23