java 板


LINE

※ 引述《tkcn (小安)》之銘言: : ※ 引述《tofuflower (無)》之銘言: : : 請問下列三種寫法 : : 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這兩種寫法那種比較好? : 就效率來說,1 跟 2 完全感受不到差別。 : 撇開效率不談, : 如果 obj 在回圈之外完全用不到, : 我會認為宣告在迴圈之內是較好的, : 差別在迴圈外是否多一個沒有用的變數, : 可能會造成誤用或閱讀上的困擾。 : : 2我的議題是這樣每次都宣告一個新的obj,那上一個obj memory會回收嗎? : : 如果會是甚麼時候回收? : : ps.一開始用過2的寫法,但曾經出現過java heap size的問題... : : 感覺就是一直宣告MyObject obj=new MyObject()把記憶體塞爆? : 你似乎不知道有 Garbage Collection(GC) 這東西。 : 簡單的說,GC 會幫你做回收的動作, : 只要你把指向物件的 refrence 都都拿掉, : 待 GC 運作後,物件就會被回收。 : 你並不知道他什麼時候去做,也不能指定他立刻去做, : 但大部分的情況下,我認為 GC 都運作的很不錯。 : 在你的例子當中, : 大概是因為物件產生的速度高於回收的速度, : 所以最後當然會爆掉。 : 如果你的需求真的必須如此, : 也許可以在迴圈裡頭放個 System.gc() "建議" GC 去做事。 : : 1我的議題是雖然只宣告一次obj : : 但之後也是每次都分給他一個新的memory空間...? : : 和2的寫法比好像一樣? : : 總之我不太了解java在甚麼時候會回收不用的記憶體? : : 而怎樣的情況下該變數的記憶體會被認定為不在使用可以回收的? : 你無法控制物件何時會被回收, : 但只有當物件被有被 refrence 時,該物件才有可能被回收。 : : 煩請有經驗的版友指教 : : 或者有人有推薦的書即可以介紹一下的 : : 感謝 orz... : 找些說明 GC 的文章來看吧,光看我說的實在是不夠。 感謝您的回覆~ 推文麻煩 還是回文好了 我知道java 有GC 但是不確定系統會自己做GC的時間為何 (要評估自己使用GC還是給系統自動使用GC) 以及GC回收的記憶體是那些? 例如 MyObject obj=new MyObject(); //第一次分配記憶體給obj obj=new MyObject(); //分配新的記憶體給obj 那GC以後是第一次分配的記憶體會被回收嗎? init內部已經沒可以優化的空間了...orz 不然我也不會那麼苦惱qq btw 有辦法偵測目前jvm使用記憶體的情況然後決定是否要使用GC嗎... 例如 if(記憶體快用完了) { 使用GC } --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.164.159.249 ※ 編輯: tofuflower 來自: 218.164.159.249 (04/08 00:20)
1F:→ james732:你可以查查看上篇文章「System.gc();」這東東的意義 04/08 00:29
2F:→ james732:Java的GC不是三言兩語可以說盡,建議google看相關資料 04/08 00:30
3F:→ james732:千萬不要沒查過System.gc();就隨便用,上次這麼做的人... 04/08 00:34
4F:→ legnaleurc:草已經長這麼高了 04/08 03:01
5F:→ sk8er411:= =樓上的有沒有這麼幽默! 04/22 23:12







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Gossiping站內搜尋

TOP