为了账号安全,请及时绑定邮箱和手机立即绑定

linux swap 没有开启,但是进程仍然有在使用虚拟内存,这是为什么?

linux swap 没有开启,但是进程仍然有在使用虚拟内存,这是为什么?

凤凰求蛊 2018-08-23 17:48:08
阿里云服务器上开启了不少服务,用top命令查看内存使用情况发现KiB Swap: 0 total, 0 free, 0 used表明系统没有打开swap分区。下面的进程使用了很大的虚拟内存例如elastic使用了16个G的虚拟内存。为什么在没有打开swap分区的情况下进程仍然在使用虚拟内存?虚拟内存使用了这么多是不是表明系统内存不足?
查看完整描述

2 回答

?
雨丶辰

TA贡献2条经验 获得超1个赞

应该是把 Linux 系统的“虚拟内存”和 进程的“虚拟内存”混淆了。

Linux 的“虚拟内存”就是硬盘上的一块空间,被称为 swap。在内存足够时,通常系统是不会需要用到这块“虚拟内存”空间进行置换,swap 未启动也没关系。

而进程的 VIRT (Virtual Memory)指标,实际上指的是一个进程需要占用内存的最大集(包括  malloc/calloc   系列函数申请的内存、堆/栈需要的内存等等)。但在实际运行中并不是每个时刻都需要这么多内存的,RES (Resident Memory)指标才是当前进程在使用的物理内存。当前的物理内存完全足够进程使用了,自然不需要用到 swap,但 VIRT 指标始终是客观存在的。

查看完整回答
1 反对 回复 2018-12-21
?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

如果内存不够用,肯定要缓存部分到swap或文件,仅做参考

查看完整回答
反对 回复 2018-08-26
  • 2 回答
  • 0 关注
  • 3236 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信