我正在使用Linux內核2.6.38,並且我正在運行一個分配4GB內存的進程,並且我有一個4GB的RAM,所以當我運行我的應用程序時,它將分配大約0.5GB來自交換空間。但是,我的應用程序運行很長時間並且多次訪問交換空間的數據。linux交換空間永遠不會釋放內存
(編輯) 爲了澄清我在做什麼:
我運行Linux 2.6.38,4 GB的RAM。
沒有運行任何應用程序,系統佔用大約500MB的RAM。
我創建了一個簡單的應用程序,它分配4GB的內存並跨越分配的內存並多次更改該內存的值(循環10次迭代)。
很明顯,我需要交換空間才能運行應用程序。
當我運行我的應用程序時,交換空間不斷積累並在幾次迭代後變滿,並且進程被終止。
在進程死亡後,交換空間仍然保持滿。
我測試了我的應用程序在更新的內核上,它工作正常,交換空間不積累。
這是這個內核版本(2.6.38)的錯誤嗎?有沒有修復它?
你的問題很不清楚,但你至少可以做到以下一種:使用具有更多內存的設備,一次分配更少的內存,添加額外的交換空間..你的過程也受到[swappiness](https ://en.wikipedia.org/wiki/Swappiness)「,您可以根據自己的需要進行修改。 – ti7