Mac OS X 查看内存使用的命令有多种,如 top、htop、vm_stat

top

mac-os-x-nei-cun-wired-active-inactive-free-total-01

 

htop

安装命令: brew install htop

mac-os-x-nei-cun-wired-active-inactive-free-total-02

 

vm_stat

mac-os-x-nei-cun-wired-active-inactive-free-total-03

 

Mac OS X 内存使用情况分为:wired, active, inactive, free四种

  1. wired 是系统核心占用的,永远不会从系统物理内存种去除。
  2. active 表示这些内存数据正在使用中,或者刚被使用过。
  3. inactive 表示这些内存中的数据是有效的,但是最近没有被使用。
  4. free 表示这些内存中的数据是无效的,这些空间可以随时被程序使用。

当free的内存低于某个值(这个值是由你的物理内存大小决定的),系统则会按照以下顺序使用inactive的资源。

首先,如果inactive的数据最近被调用了,系统会把它们的状态改变成active,并接在原有active内存逻辑地址的后面, 

其次,如果inactive的内存数据最近没有被使用过,但是曾经被更改过而还没有在硬盘的相应虚拟内存中做修改,系统会对相应硬盘的虚拟内存做修改,并把这部分物理内存释放为free供程序使用。

再次,如果inactive内存中得数据被在映射到硬盘后再没有被更改过,则直接释放成free。

最后,如果active的内存一段时间没有被使用,会被暂时改变状态为inactive。

所以说,如果你的系统里有少量的free memeory和大量的inactive的memeory,说明你的内存是够用的,系统运行在最佳状态。

只要需要,系统就会使用它们,不用担心。而反之如果系统的free memory和inactive memory都很少,而active memory很多,说明你的内存不够了。当然一开机,大部分内存都是free,这时系统反而不在最佳状态,因为很多数据都需要从硬盘调用,速度反而慢了。

 

最后,分享一个统计Mac内存python的脚本

$ python stat_mem.py 
Wired Memory:           2305 MB
Active Memory:          10111 MB
Inactive Memory:        1710 MB
Free Memory:            578 MB
Real Mem Total (ps):    16773.445 MB

 

脚本源码:

vim stat_mem.py

#!/usr/bin/python
'''
mimvp.com
2017.5.20
'''
 
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 )

 

 

参考推荐

Mac OS X 系统命令查看系统版本号

Mac OS 80 端口占用问题的解决方法

Mac brew 安装软件