鍍金池/ 問答/C  Linux/ 在有虛擬存儲器的情況下,是否還用擔(dān)心內(nèi)存泄露?

在有虛擬存儲器的情況下,是否還用擔(dān)心內(nèi)存泄露?

因為我覺得那些泄露出去的內(nèi)存,在很長一段時間都是用不上的,我覺得它們通過頁面置換算法是會被換出到磁盤中,這樣內(nèi)存還是夠用的。所以,在現(xiàn)在,內(nèi)存泄露真的會那么嚴重嗎?

回答
編輯回答
別硬撐
  1. 當系統(tǒng)物理內(nèi)存不足,會觸發(fā)swap分區(qū)的使用,內(nèi)核通過內(nèi)存置換算法(比如采用LRU策略)將非熱點內(nèi)存保存到磁盤swap分區(qū)中,一旦觸發(fā)swap,后續(xù)新的內(nèi)存申請都會觸發(fā)置換,訪問舊的內(nèi)存一旦被置換到swap分區(qū)又需要重新從swap分區(qū)讀到內(nèi)存中,這樣就會導(dǎo)致惡性循環(huán),內(nèi)存和swap之間頻繁做io,內(nèi)存抖動嚴重,進程申請和訪問內(nèi)存性能嚴重下降,有的進程甚至申請不到內(nèi)存而報OOM的錯誤退出。

  2. 國外某知名公司就直接去掉swap分區(qū),內(nèi)存不足直接讓程序退出,這樣也能及時發(fā)現(xiàn)問題,不至于導(dǎo)致內(nèi)存抖動使得服務(wù)器整體性能下降。

2017年11月7日 22:51
編輯回答
舊城人

嚴重!最基本的來說這是一個代碼好壞的問題,存在內(nèi)存泄漏說明是一個有問題的代碼。并不能因為一項技術(shù)能承擔(dān)起你這個問題的后果而不去解決這個問題。

2018年1月28日 20:11