我正在使用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