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

阿里云服务器上开启了不少服务,用top命令查看内存使用情况发现

KiB Swap: 0 total, 0 free, 0 used

表明系统没有打开swap分区。
下面的进程使用了很大的虚拟内存
例如elastic使用了16个G的虚拟内存。
为什么在没有打开swap分区的情况下进程仍然在使用虚拟内存?
虚拟内存使用了这么多是不是表明系统内存不足?

https://img.mukewang.com/5b82777200019b0808000431.jpg

凤凰求蛊
浏览 3263回答 2
2回答

雨丶辰

应该是把 Linux 系统的“虚拟内存”和 进程的“虚拟内存”混淆了。Linux 的“虚拟内存”就是硬盘上的一块空间,被称为 swap。在内存足够时,通常系统是不会需要用到这块“虚拟内存”空间进行置换,swap 未启动也没关系。而进程的 VIRT (Virtual Memory)指标,实际上指的是一个进程需要占用内存的最大集(包括  malloc/calloc   系列函数申请的内存、堆/栈需要的内存等等)。但在实际运行中并不是每个时刻都需要这么多内存的,RES (Resident Memory)指标才是当前进程在使用的物理内存。当前的物理内存完全足够进程使用了,自然不需要用到 swap,但 VIRT 指标始终是客观存在的。

陪伴而非守候

如果内存不够用,肯定要缓存部分到swap或文件,仅做参考
打开App,查看更多内容
随时随地看视频慕课网APP