室友撓撓頭,拿起手機:「這個嘛⋯⋯我也不太確定。我去問問學長。」
他三兩下撥通電話,跟對方簡單寒暄幾句,便直接切入正題:「學長,我和同學想問,程式佔用的記憶體,到底什麼時候才會還回去?」
他順手按下擴音鍵,讓我也能一起聽。
手機那頭傳來熟悉又帶點驚訝的聲音:「咦?我記得這個你們課程還沒上到吧?好像是程式語言還是編譯器的課才會講。」
「對啊,剛剛在討論 array 的時候聊到的。」室友笑著解釋。
學長發出一聲爽朗的笑聲:「你們還真是認真複習啊!」
停頓片刻,他語氣一轉,開始耐心解釋:「理想狀況下,記憶體會在任務結束後馬上釋放。所以我們寫程式時,常常會把一個大任務拆成許多小任務,這樣小任務一做完,用掉的記憶體就能回收,不會一直佔著空間。效率才高。」
他稍微頓了頓,語氣放慢:「一般來說,程式結束後,所有記憶體也會自動跟著釋放。不過啊,如果程式沒寫好,就會出問題。有時候它關掉了,卻還霸佔著一塊記憶體不還給系統。久而久之,系統可用的記憶體就越來越少,最後整台電腦都變得又慢又卡。這種情況我們叫——『記憶體洩漏』。」
我聽著聽著,覺得這種情形有點熟悉。
「那怎麼辦?」室友問道。
「怎麼辦?」學長笑了笑,「重新開機啊!這就是為什麼我們老說『重新開機,治百病』。」
啊,難怪覺得熟悉,這不就是我每次電腦不聽話時的必殺技嗎!
「謝啦,學長。」室友見我沒再追問,便爽快掛掉電話。
他轉頭看向我,笑著說:「問題解決了吧?那還不快上線,一起打Boss!」