以前雖內存泄漏不以為然,因為在幾個G內存的電腦上,忘了delete一個對象,能占多大點內存啊?
結果這次出問題了,我的程序徹夜運算,每次執行10遍任務后,程序就會崩潰,一開始根據打印的日志,還以為是自己沒有正確載入圖片,並且還懷疑到回調函數/刷新函數/鎖機制/多線程同步等等,全都懷疑上了。后來發現一個特點,每次程序崩潰的時候,所占用的內存都是1.47G,而且執行任務期間使用的內存穩定增長,從不下降,這才有了初步的認識,原來是內存泄漏搞的鬼(雖然到現在都沒有具體找到哪段代碼產生的內存泄漏)。還有單次執行任務的時候,從不崩潰,這只能說明是執行后累計的結果。再有就是,使用索引的時候不會出現這種情況,加深了我疑慮,因為兩種運行情況下,所使用的回調函數/刷新函數/鎖機制/多線程機制等等,都是相同的。
說起來,32位程序可用的內存挺可憐的,只有區區1.47G。以前總是不明白為什么要是有64位程序,現在算是明白了一點。