中午下了一单。也没多想。
刚刚搜索了一下,大家似乎觉得 8G 好像不够用一样,非得 665?
一般长期在运行的有一个图形处理软件,一个 IDE,一个虚拟机,至于后台的运行的服务,大家应该都差不多吧,mysql 肯定是在跑的,还有 apache 什么的,我是从来都不关软件的人。现在在用的机器 4G 还没有太大压力。
你们在 Mac 下是怎么查看内存使用情况的?是直接通过 top 或者 Activity Monitor 查看 Free memory
的么?
Mac 跟 Linux 不一样,他的内存分配模式不是即时把内存释放给操作系统的,所以查看内存使用不是看还有多少 Free memory
而是看当前所有进程总共用了多少实际内存?虽然内存越大越好,但是我真心怀疑你当前所有进程使用的内存总量远远没有 8G,也远远没有达到系统需要频繁做磁盘 IO 交换的程度。
用下面这个脚本可以验证一下当前内存实际消耗:
#!/usr/bin/python
import subprocess
import re
# Get process info
ps = subprocess.Popen(['ps', '-caxm', '-orss,comm'], stdout=subprocess.PIPE).communicate()[0]
vm = subprocess.Popen(['vm_stat'], stdout=subprocess.PIPE).communicate()[0]
# Iterate processes
processLines = ps.split('\n')
sep = re.compile('[\s]+')
rssTotal = 0 # kB
for row in range(1,len(processLines)):
rowText = processLines[row].strip()
rowElements = sep.split(rowText)
try:
rss = float(rowElements[0]) * 1024
except:
rss = 0 # ignore...
rssTotal += rss
# Process vm_stat
vmLines = vm.split('\n')
sep = re.compile(':[\s]+')
vmStats = {}
for row in range(1,len(vmLines)-2):
rowText = vmLines[row].strip()
rowElements = sep.split(rowText)
vmStats[(rowElements[0])] = int(rowElements[1].strip('\.')) * 4096
print 'Wired Memory:\t\t%d MB' % ( vmStats["Pages wired down"]/1024/1024 )
print 'Active Memory:\t\t%d MB' % ( vmStats["Pages active"]/1024/1024 )
print 'Inactive Memory:\t%d MB' % ( vmStats["Pages inactive"]/1024/1024 )
print 'Free Memory:\t\t%d MB' % ( vmStats["Pages free"]/1024/1024 )
print 'Real Mem Total (ps):\t%.3f MB' % ( rssTotal/1024/1024 )
最后 Real Mem Total
将告诉你所有进程实际消耗的内存总量。