阿里云服務(wù)器上開啟了不少服務(wù),用top命令查看內(nèi)存使用情況發(fā)現(xiàn)KiB Swap: 0 total, 0 free, 0 used表明系統(tǒng)沒有打開swap分區(qū)。下面的進(jìn)程使用了很大的虛擬內(nèi)存例如elastic使用了16個(gè)G的虛擬內(nèi)存。為什么在沒有打開swap分區(qū)的情況下進(jìn)程仍然在使用虛擬內(nèi)存?虛擬內(nèi)存使用了這么多是不是表明系統(tǒng)內(nèi)存不足?
2 回答

雨丶辰
TA貢獻(xiàn)2條經(jīng)驗(yàn) 獲得超1個(gè)贊
應(yīng)該是把 Linux 系統(tǒng)的“虛擬內(nèi)存”和 進(jìn)程的“虛擬內(nèi)存”混淆了。
Linux 的“虛擬內(nèi)存”就是硬盤上的一塊空間,被稱為 swap。在內(nèi)存足夠時(shí),通常系統(tǒng)是不會(huì)需要用到這塊“虛擬內(nèi)存”空間進(jìn)行置換,swap 未啟動(dòng)也沒關(guān)系。
而進(jìn)程的 VIRT (Virtual Memory)指標(biāo),實(shí)際上指的是一個(gè)進(jìn)程需要占用內(nèi)存的最大集(包括? malloc/calloc? ?系列函數(shù)申請的內(nèi)存、堆/棧需要的內(nèi)存等等)。但在實(shí)際運(yùn)行中并不是每個(gè)時(shí)刻都需要這么多內(nèi)存的,RES (Resident Memory)指標(biāo)才是當(dāng)前進(jìn)程在使用的物理內(nèi)存。當(dāng)前的物理內(nèi)存完全足夠進(jìn)程使用了,自然不需要用到 swap,但 VIRT 指標(biāo)始終是客觀存在的。
添加回答
舉報(bào)
0/150
提交
取消