阿里云服务器上开启了不少服务,用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 指标始终是客观存在的。
- 2 回答
- 0 关注
- 3236 浏览
添加回答
举报
0/150
提交
取消