首页 > 系统相关 >Linux:free指令

Linux:free指令

时间:2024-10-31 16:33:28浏览次数:5  
标签:available buffer cache free 指令 内存 Linux buff

学习自:

Linux free命令使用教程(free指令)(查看内存、系统内存、内存占用、内存使用情况)_free命令看到的内存-CSDN博客

free命令详解-CSDN博客

1、概述

free指令用于显示系统中未使用已使用物理swap区总量

2、语法

free [-bkmght] [ -s 秒数 ]

3、参数

参数 用途
b 以B为单位
k KB
m MB
g GB
h 以人类易读的方式输出
t 加入total行,用于计算某类内存总数
s 后跟数字,每隔几秒显示一次

4、输出

free
              total        used        free      shared  buff/cache   available
Mem:         828592      148124      422124        5740      258344      546268
Swap:       1952764           0     1952764

free -h
              total        used        free      shared  buff/cache   available
Mem:          809Mi       144Mi       412Mi       5.0Mi       252Mi       533Mi
Swap:         1.9Gi          0B       1.9Gi

1)指标

指标 说明
total 总量
used 已使用
free 剩余可用
shared 多进程共享内存
buff/cache buff+cache大小
available 可被新应用程序使用的内存大小

2)解释

①buff、cache

buffer和cache是两种不同的存储:

buffer:缓冲区。介于内存、硬盘之间,目的是提高内存与硬盘之间的数据交换速度。当数据从内存写入硬盘时,并不是直接写入,而是先存到buffer中,待buffer积累到一定大小后统一写入硬盘。

cache:高速缓存。介于CPU、内存之间,为了解决CPU运算速度与内存的读写速度不匹配的问题。Cache中存放频繁访问的数据,以便CPU可以快速访问这些数据。

当OS要读取某个文件(如/etc/hosts),它会先检查这个文件的数据是否已经在Cache中,如果在,就放弃访问磁盘而是直接从内存中读取。该过程称为命中。如果未命中,此时OS要去调度I/O去磁盘中读取数据,再将读来的数据页放到Cache中。

在Linux2.4版本之前,cache和buffer是完全分离的,此时对于文件数据会被缓存两次,这种方式虽然简单,但是低效,浪费内存空间(【性能】Linux系统上free命令看到的buff/cache到底是什么 - 简书)。

Linux2.4版本将cache和buffer统一了,如果一个页加载到了cache,那么在buffer中只需要维护一个指向该页的指针就可以了。只有那些没有文件表示的块才会放到buffer里。

②free、available

free:可用内存空间

available:应用程序可用的内存空间

free是真正尚未被使用的物理内存数量。available是从应用程序视角看到的可用内存数量。Linux为了提高磁盘操作性能,会消耗部分内存去缓存磁盘数据,即buff/cache。因此对于内核来说,buff和cache都属于已被使用的内存

当应用程序需要内存时,如果没有足够的free使用,内核会从buff和cache中回收内存来满足应用程序的需求。因此从应用程序角度来看,available=free+buffer+cache。当然,这只是理想的计算方式,实际中的数据往往有较大误差。

③swap区

swap区是磁盘上的一片空间,也称为虚拟内存。

当内存空间不足时,会将部分页调入到swap区以腾出空间给新的程序页使用。

具体见:Linux:vmstat指令 - ShineLe - 博客园

标签:available,buffer,cache,free,指令,内存,Linux,buff
From: https://www.cnblogs.com/ShineLeBlog/p/18513280

相关文章

  • Linux系统调用和库函数的区别是什么
    Linux系统调用和库函数是在程序设计中常用的两个概念,具有明显的差异。1、系统调用:是操作系统内核提供的功能接口,用于执行核心操作,如文件管理、进程控制等;2、库函数:是用户空间提供的封装好的函数库,如C库、数学库等。区别主要体现在执行级别、性能、功能和使用场合等方面。系统调用......
  • 【Linux】巧妙运用<信号量>解决<水果放取问题>(思维导图&代码演示&思路解析)
    前言大家好吖,欢迎来到YY滴Linux系列,热烈欢迎!本章主要内容面向接触过C++的老铁主要内容含:欢迎订阅YY滴C++专栏!更多干货持续更新!以下是传送门!YY的《C++》专栏YY的《C++11》专栏YY的《Linux》专栏YY的《数据结构》专栏YY的《C语言基础》专栏YY的《初学者易错点》......
  • 【网络安全零基础入门】Linux安全加固(非常详细)零基础入门到精通,收藏这一篇就够了
    大家好,我是向阳。今天将继续带大家入门网络安全linux系统篇安全加固教程,全程干货,建议收藏哈安全加固方案原则1.版本升级对于系统和应用在使用过程中暴露的安全缺陷,系统或应用厂商会及时发布解决问题的升级补丁包。升级系统或应用版本,可有效解决旧版本存在的安全风险。......
  • Linux——让程序在后台运行
    Screen是一个全屏窗口管理器,它在多个进程(通常是交互式shell)之间多路传输物理终端。点击查看代码#centos安装screenyuminstall-yscreen#在Ubuntu上安装并使用screensudoaptupdate#更新包列表sudoaptinstallscreen#安装screen工具#创建一个新的窗口sc......
  • 用Linux卸载手机上的系统软件
    很多手机系统滥用系统软件定义,把没用的软件归类为系统软件,不让用户卸载。但我们可以用adb卸载这些软件。首先用USB数据线将手机连接到电脑,在手机上切换到文件传输模式(MTP模式)安装adbArchLinux#https://wiki.archlinux.org/title/Android_Debug_Bridgesudopacman-Sandroid......
  • Linux vmstat
    通过vmstat--help查看usage:vmstat[options][delay][count]options指定参数delay统计时间间隔count统计次数options:-a,--activeactive/inactivememory-f,--forksnumberofforkssinceboot-m,--slabsslabinfo-n,......
  • MongoDB 部署指南:从 Linux 到 Docker 的全面讲解
    一、MongoDB简介MongoDB是一种NoSQL数据库,以文档模型存储数据,具备高性能、弹性扩展性和分布式架构等特点,非常适用于高并发和大数据量的场景。本文将从Linux和Docker环境开始讲解,帮助读者在不同环境下顺利部署MongoDB。二、在Linux(CentOS)上部署MongoDB2.1......
  • “双系统”出炉!瑞芯微RK3562J非对称AMP:Linux+RTOS/裸机
    “非对称AMP”双系统AMP(AsymmetricMulti-Processing),即非对称多处理架构。“非对称AMP”双系统是指多个核心相对独立运行不同的操作系统或裸机应用程序,如Linux+RTOS/裸机,但需一个主核心来控制整个系统以及其它从核心。每个处理器核心相互隔离,拥有属于自己的内存,既可各自独立......
  • Linux安装Python 3.11
    Linux安装python在Linux上安装Python3.11,你可以按照以下步骤进行。这些步骤以CentOS为例,但其他Linux发行版的过程大同小异,可能只需稍作调整。1.检查Python版本首先,打开终端,检查系统上是否已安装Python3.11:python3.11--version#或者python3--version如果系统返回的是......
  • 如何搭建一个网站-linux
    准备工作选择Linux发行版在选择Linux发行版时,我们需要权衡不同的特性和需求。以下是几个常用的选择:发行版特点适用场景Ubuntu用户友好,丰富的软件资源初学者,桌面应用CentOS稳定可靠,长期支持服务器环境Debian稳健,注重安全生产环境Ubuntu以其简洁直观......