[問題] memory leak in c++ & java

看板java作者 (raison detre)時間10年前 (2015/06/18 11:13), 編輯推噓4(4010)
留言14則, 5人參與, 最新討論串1/1
請問一下各位 關於memory leak的情形 在c/c++的狀況中 如果配置了記憶體但是沒有釋放 最後該程式結束後 記憶體是否還會歸還作業系統 還是從此這段記憶體就無法再使用 直到下一次的作業系統重新開機 在早期公司的前輩們都是這樣說的 但是後來看了一些文章之後 好像並不是這樣 而java中的如果產生了memory leak 通常是該物件已經沒有在使用 但是有其他的物件還參照著這個指標的狀況 造成GC無法正常回收 請問在何種狀況下記憶體才會歸還 1. 該java程式結束後 2. 整個jvm結束 3. 必須等到作業系統重開 我在網路上查了很多 但是各家說法好像都不一樣 所以想請問一下大家的意見 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.225.61.13 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1434597190.A.422.html

06/18 11:21, , 1F
兩個問題都是看作業系統, 很很早期的作業系統不會回收
06/18 11:21, 1F

06/18 11:22, , 2F
應用程式不正常歸還的話都是要等作業系統重開.
06/18 11:22, 2F

06/18 15:54, , 3F
jvm會自己作回收,c++可以測試看看
06/18 15:54, 3F

06/18 15:57, , 4F
這不叫leak 這叫做設計錯誤 請用weak reference
06/18 15:57, 4F

06/18 19:35, , 5F
java寫很爛, JVM也不見得可以正常回收. 最後還是得
06/18 19:35, 5F

06/18 19:35, , 6F
關掉JVM
06/18 19:35, 6F

06/19 09:56, , 7F
都已經不用寫指令還記憶體了你還可以把記憶體拿著手不給還
06/19 09:56, 7F

06/19 09:56, , 8F
其實也是一種才能阿...
06/19 09:56, 8F

06/19 15:32, , 9F
其實還滿簡單的 尤其愛用singleton的
06/19 15:32, 9F

06/19 15:32, , 10F
裡面放個list一直堆垃圾就會出包了....
06/19 15:32, 10F

06/19 15:32, , 11F
不需要啥才能,一堆爛code都這樣寫....
06/19 15:32, 11F

07/03 23:55, , 12F
應該釐清的是 memory leak 怎麼發生,才來討論它的歸還
07/03 23:55, 12F

07/03 23:57, , 13F
比如 JavaSE 1.6 的 String.subString() 就必須等所有
07/03 23:57, 13F

07/03 23:58, , 14F
參考到原字串的物件都被回收才會釋放記憶體
07/03 23:58, 14F
文章代碼(AID): #1LWZT6GY (java)
文章代碼(AID): #1LWZT6GY (java)