阿里云服務器上開啟了不少服務,用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 關注
- 3329 瀏覽
添加回答
舉報
0/150
提交
取消