【操作系统】MacOS虚拟内存统计指标

目录

命令及其结果

参数解读

有趣的实验


在 macOS 系统中,虚拟内存统计指标提供了对系统内存使用情况和虚拟内存操作的重要洞察。通过分析这些指标,我们可以更好地了解系统的性能状况和内存管理情况。

命令及其结果

复制代码
>>> vm_stat
Mach Virtual Memory Statistics: (page size of 4096 bytes)
Pages free:                                7665.
Pages active:                           7161271.
Pages inactive:                         7157755.
Pages speculative:                         1684.
Pages throttled:                              0.
Pages wired down:                       1454118.
Pages purgeable:                          26180.
"Translation faults":                6791372835.
Pages copy-on-write:                   57696402.
Pages zero filled:                   1703440882.
Pages reactivated:                    152904898.
Pages purged:                           2745445.
File-backed pages:                      2962038.
Anonymous pages:                       11358672.
Pages stored in compressor:            12269616.
Pages occupied by compressor:            993465.
Decompressions:                       188199124.
Compressions:                         377521942.
Pageins:                               63862215.
Pageouts:                                361515.
Swapins:                               24523111.
Swapouts:                              29537178.

参数解读

  1. Pages free: 这个指标表示系统中当前可用的空闲页面数量。在需要分配新内存时,这些空闲页面将被使用。
  2. Pages active: 表示当前正在使用或最近被使用的页面数量。这些页面包含了当前正在执行的程序或者最近被访问的数据。
  3. Pages inactive: 表示最近被使用过但现在处于不活跃状态的页面数量。这些页面保留在内存中,以便在需要时快速访问。
  4. Pages speculative: 这些页面被系统预测会被使用,但实际上并未被使用。
  5. Pages throttled: 表示因系统资源限制而被限制访问的页面数量。
  6. Pages wired down: 无法交换出到磁盘的页面数量,通常包含了内核和系统重要数据。
  7. Pages purgeable: 可以被移除或清除的页面数量,以释放内存空间。
  8. Translation faults: 表示在虚拟内存中发生的页转换错误次数,包括缺页中断。
  9. Pages copy-on-write: 表示发生写时复制的页面数量,用于在进程间共享数据时避免写操作相互影响。
  10. Pages zero filled: 表示被填充为零的页面数量,通常用于初始化时分配给进程。
  11. Pages reactivated: 表示被重新激活的页面数量,曾经处于非活跃状态但现在又被重新使用。
  12. Pages purged: 表示被清除或移除的页面数量,通常用于释放内存空间。
  13. File-backed pages: 表示文件支持的页面数量,包含与文件关联的数据。
  14. Anonymous pages: 表示不与文件关联的页面数量,通常包含动态分配的堆内存等。
  15. Pages stored in compressor: 表示存储在压缩器中的页面数量,用于节省内存空间。
  16. Pages occupied by compressor: 表示压缩器占用的页面数量,用于存储压缩后的页面数据。
  17. Decompressions: 表示解压缩的次数,从压缩状态恢复到原始页面状态。
  18. Compressions: 表示压缩的次数,将页面压缩以节省内存空间。
  19. Pageins: 表示页面调入次数,从磁盘调入页面到内存中。
  20. Pageouts: 表示页面调出次数,将页面从内存调出到磁盘中。
  21. Swapins: 表示交换进程的次数,从交换文件中调入进程到内存中。
  22. Swapouts: 表示交换出进程的次数,将进程调出到交换文件中释放内存空间。

有趣的实验

如下代码,可在macos上运行,但在linux上会OOM(如果内存不足的情况)

复制代码
a=[1]*1024*1024*1024
b=[2]*1024*1024*1024

# 上述代码会占用内存,每个约9GB的样子
c = []
c.extend(a)
c.extend(b)

上述代码中,执行extend方法过内存会继续增长,此时如果linux的内存(包括虚拟内存)不足,会直接oom。

MacOS中则不同,MacOS中可以申请到很大的虚拟内存,代码可以正常执行。

通过htop命令可以发现,MacOS下的虚拟实际虚拟内存大小。

这里可以看到MacOS交换内存大小为23G,实际测试下来,程序的虚拟内存占用甚至可以到500GB以上,这个远远超出了实际内存+虚拟内存的大小。

相关推荐
2501_9160088917 分钟前
iOS 不上架怎么安装?多种应用分发方式解析,ipa 文件安装、企业签名、Ad Hoc 与 TestFlight 实战经验
android·macos·ios·小程序·uni-app·cocoa·iphone
Digitally5 小时前
如何将三星手机的照片传输到Mac——6种可行的方法
macos·智能手机
学习研习社7 小时前
移动硬盘上的文件消失了?以下是Mac电脑解决方法
macos·电脑
2501_916007477 小时前
iOS 26 能耗检测实战指南,升级后电池掉速是否正常 + KeyMob + Instruments 实时监控 + 优化策略
android·macos·ios·小程序·uni-app·cocoa·iphone
史上最菜开发8 小时前
a-input输入框,苹果电脑(MAC)输入法的输入Bug
vue.js·macos·bug
亚林瓜子9 小时前
在mac上面使用parquet-cli查看parquet文件
hadoop·macos·cli·parquet
FreeBuf_1 天前
XCSSET新变种:专攻苹果macOS用户,实现窃密+勒索
macos
琉-璃1 天前
Mac完整Homebrew安装教程、brew安装教程踩过的坑、brew安装总结、安装brew遇到的问题
macos
阿里云云原生1 天前
让每次语音唤醒都可靠,公牛沐光重构可观测体系
macos·阿里云·重构·xcode·可观测
琉-璃1 天前
Mac M2安装VUE3
macos