【操作系统】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以上,这个远远超出了实际内存+虚拟内存的大小。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/377594.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JavaWeb后端——控制反转IOC/依赖注入DI

控制反转:why,目标是要做到控制反转 依赖注入:how,如何实现控制反转,控制反转有很多方法,依赖注入是其中一种方法 控制反转(Inversion of Control, IoC)和依赖注入(Depe…

【每日一题】LeetCode——链表的中间结点

📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️ 🙏小杨水平有…

VRRP配置

目录 网络拓扑图 配置要求 配置步骤 网络拓扑图 配置要求 按照图示配置 IP 地址和网关在 SW1,SW2,SW3 上创建 Vlan10 和 Vlan20,对应 IP 网段如图,交换机之间链路允许所有 VLAN 通过在 SW1 和 SW2 上配置 VRRP,要求…

【Java】ArrayList和LinkedList的区别是什么

目录 1. 数据结构 2. 性能特点 3. 源码分析 4. 代码演示 5. 细节和使用场景 ArrayList 和 LinkedList 分别代表了两类不同的数据结构:动态数组和链表。它们都实现了 Java 的 List 接口,但是有着各自独特的特点和性能表现。 1. 数据结构 ArrayList…

C语言:函数递归

1. 递归是什么&#xff1f; 先来看最简单的递归代码&#xff1a; #include <stdio.h>int main() {printf("Hello World\n");main();return 0; } 在main函数里还有一个main函数&#xff0c;在XXX函数里有XXX函数&#xff0c;这种就是递归 在函数里调用自己&…

jvm几个常见面试题整理

1. Full GC触发机制有如下5种情况。 (1)调用System.gc()时&#xff0c;系统建议执行Full GC&#xff0c;但是不必然执行。(2)老年代空间不足。(3)方法区空间不足。(4)老年代的最大可用连续空间小于历次晋升到老年代对象的平均大小就会进行Full GC。(5)由Eden区、S0(From)区向S…

探索NLP中的N-grams:理解,应用与优化

简介 n-gram[1] 是文本文档中 n 个连续项目的集合&#xff0c;其中可能包括单词、数字、符号和标点符号。 N-gram 模型在许多与单词序列相关的文本分析应用中非常有用&#xff0c;例如情感分析、文本分类和文本生成。 N-gram 建模是用于将文本从非结构化格式转换为结构化格式的…

MySQL用心总结

大家好&#xff0c;好久不见&#xff0c;今天笔者用心一步步写一份mysql的基础操作指南&#xff0c;欢迎各位点赞收藏 -- 启动MySQL net start mysql-- 创建Windows服务 sc create mysql binPath mysqld_bin_path(注意&#xff1a;等号与值之间有空格) mysql -h 地址 -…

详述FlinkSql Join操作

FlinkSql 的 Join Flink 官网将其分为了 Joins 和 Window Joins两个大类&#xff0c;其中里面又分了很多 Join 方式 参考文档&#xff1a; Joins | Apache Flink Window JOIN | Apache Flink Joins 官网介绍共有6种方式&#xff1a; Regular Join&#xff1a;流与流的 Joi…

【http】2、http request header Origin 属性、跨域 CORS、同源、nginx 反向代理、预检请求

文章目录 一、Origin 含义二、跨源资源共享&#xff1a;**Cross-Origin Resource Sharing** CORS2.1 跨域的定义2.2 功能概述2.3 场景示例2.3.1 简单请求2.3.2 Preflighted requests&#xff1a;预检请求 2.4 header2.4.1 http request header2.4.1.1 Origin2.4.1.2 Access-Con…

【开源】基于JAVA+Vue+SpringBoot的新能源电池回收系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 用户档案模块2.2 电池品类模块2.3 回收机构模块2.4 电池订单模块2.5 客服咨询模块 三、系统设计3.1 用例设计3.2 业务流程设计3.3 E-R 图设计 四、系统展示五、核心代码5.1 增改电池类型5.2 查询电池品类5.3 查询电池回…

基于蒙特卡洛的电力系统可靠性分析matlab仿真,对比EDNS和LOLP

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 1.课题概述 电力系统可靠性是指电力系统按可接受的质量标准和所需数量不间断地向电力用户供应电力和电能量的能力的量度&#xff0c;包括充裕度和安全性两个方面。发电系统可靠性是指统一并网的全部发电机…

如何保持mac苹果电脑系统在最佳状态?不卡顿

苹果电脑一直以其卓越的性能和用户友好的操作系统而备受欢迎。然而电脑上的文件、应用程序和缓存可能会逐渐积累&#xff0c;导致性能下降。为了确保你的苹果电脑保持最佳状态&#xff0c;高效清理是至关重要的一步。在本文中&#xff0c;我们将分享一些如何清理苹果电脑更高效…

SolidWorks学习笔记——入门知识2

目录 建出第一个模型 1、建立草图 2、选取中心线 3、草图绘制 4、拉伸 特征的显示与隐藏 改变特征名称 5、外观 6、渲染 建出第一个模型 1、建立草图 图1 建立草图 按需要选择基准面。 2、选取中心线 图2 选取中心线 3、草图绘制 以对称图形举例&#xff0c;先画出…

Qt信号和槽机制(什么是信号和槽,connect函数的形式,按钮的常用信号,QWidget的常用槽,自定义槽函数案例 点击按钮,输出文本)

一.什么是信号和槽 信号槽式Qt中的一个很重要的机制。信号槽实际上是观察者模式,当发生了感兴趣的事件&#xff0c;某一个操作就会被自动触发。当某个事件发生之后&#xff0c;比如按钮检测到自己被点击了一下&#xff0c;它就会发出一个信号。这种发出类似广播。如果有对象对…

深入理解原码、反码和补码

文章目录 前言原码反码补码原码、反码、补码之间的转换为什么需要反码和补码&#xff1f; 前言 在计算机领域&#xff0c;经常会听到原码、反码和补码这些概念。这些概念是计算机中对数值进行存储和运算的基础。本文将深入探讨这些概念&#xff0c;解释它们的定义、特点以及在…

【Git版本控制 01】基本操作

目录 一、初始配置 二、添加文件 三、查看日志 四、修改文件 五、版本回退 六、撤销修改 七、删除文件 一、初始配置 Git版本控制器&#xff1a;记录每次的修改以及版本迭代的一个管理系统。 # 初始化本地仓库&#xff1a;git init(base) [rootlocalhost gitcode]# gi…

Rust开发WASM,WASM Runtime运行

安装wasm runtime curl https://wasmtime.dev/install.sh -sSf | bash 查看wasmtime的安装路径 安装target rustup target add wasm32-wasi 创建测试工程 cargo new wasm_wasi_demo 编译工程 cargo build --target wasm32-wasi 运行 wasmtime ./target/wasm32-wasi/d…

13. UE5 RPG限制Attribute的值的范围以及生成结构体

前面几章&#xff0c;我们实现了通过GameplayEffect对Attribute值的修改&#xff0c;比如血量和蓝量&#xff0c;我们都是有一个最大血量和最大蓝量去限制它的最大值&#xff0c;而且血量和蓝量最小值不会小于零。之前我们是没有实现相关限制的&#xff0c;接下来&#xff0c;我…

JVM-运行时数据区程序计数器

运行时数据区 Java虚拟机在运行Java程序过程中管理的内存区域&#xff0c;称之为运行时数据区。《Java虚拟机规范》中规定了每一部分的作用。 程序计数器的定义 程序计数器&#xff08;Program Counter Register&#xff09;也叫PC寄存器&#xff0c;每个线程会通过程序计数器…