首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >linux交换空间从不释放内存

linux交换空间从不释放内存
EN

Stack Overflow用户
提问于 2017-04-16 23:47:05
回答 2查看 5K关注 0票数 4

我使用的是Linux内核2.6.38,我正在运行一个进程,它分配4GB内存,我有一个4GB可用的ram,所以当我运行我的应用程序时,它会从交换空间分配0.5GB左右。但是,我的应用程序运行了很长时间,并多次访问交换空间上的数据。

(编辑)以澄清我正在做的事情:

  • 我正在运行Linux2.6.38,内存为4GB。
  • 在不运行任何应用程序的情况下,系统占用了大约500 of的RAM。
  • 我创建了一个简单的应用程序,它分配4GB内存,并在分配的内存中寻找,并多次更改该内存的值(循环10次)。
  • 显然,为了运行应用程序,我需要交换空间。
  • 当我运行我的应用程序时,交换空间会不断积累,在几次迭代之后就会满了,这个过程就会被终止。
  • 进程终止后,交换空间也将保持满。
  • 我在最近的内核上测试了我的应用程序,它工作得很好,交换空间不会累积。

这是这个内核版本(2.6.38)上的一个bug吗?有解决办法吗?

EN

回答 2

Stack Overflow用户

发布于 2017-04-17 00:28:13

没有内存泄漏。

您假设当应用程序需要比可用内存更多的内存时,会编写部分内存以进行交换。这不一定是真的。

系统可能(通常也会)编写其他完全无关的进程来交换,因为它们目前没有在使用中。

由于此交换空间不属于您的应用程序,因此在应用程序退出后它将继续使用。

这个交换空间可能会继续使用很长一段时间,因为当有空闲RAM时,Linux不会先发制人地重新加载它们。

票数 6
EN

Stack Overflow用户

发布于 2017-04-16 23:59:47

我不确定我的回答是否会回答你的问题,但我问自己一个类似的问题,不久前。

总之,当Linux分配内存(RAM/SWAPP)时,它只在需要时才释放内存。这意味着,即使在进程结束后,分配的内存也将保持不变,直到另一个进程需要空间为止。

但是,如果您想释放SWAPP,可以手动进行

代码语言:javascript
复制
sudo swapoff -a 

别忘了把它打开

代码语言:javascript
复制
sudo swapon -a 

您可以在链接就是那个上找到更多信息。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43443368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档