详细分析Linux内存知识并释放内存

目录

  • 前言
  • 1. 基本知识
    • 1.1 free
    • 1.2 cat /proc/meminfo
    • 1.3 slabtop
  • 2. 清空内存

前言

本篇文章主要分析内存
如果是磁盘空间,推荐阅读:服务器出现根目录磁盘满了解决方法

1. 基本知识

在Linux系统中,查看内存的基本知识包括以下几个方面:

  • 总内存和可用内存free来查看系统的内存使用情况
    free命令会显示系统的总内存、已用内存、空闲内存以及缓冲区和缓存等信息
# 更易读的方式显示内存信息,包括单位为 MB 或 GB
free -h
  • 详细的内存信息cat /proc/meminfo命令来查看更详细的内存信息
# 关于内存的各种统计数据,如内存总量、空闲内存、已使用内存、缓冲区和缓存等。
cat /proc/meminfo
  • 进程内存使用情况tophtop命令来实时监视系统的进程和其内存使用情况
# 每个进程的内存占用情况以及系统总体的内存使用情况。
top

htop
  • 内存交换分区(Swap):除了物理内存外,Linux系统还可以使用交换分区来扩展内存空间。使用swaponswapoff命令来启用或禁用交换分区,以及swapon -s命令来查看当前系统中启用的交换分区情况
# 列出当前系统中启用的交换分区及其使用情况
swapon -s

使用如上命令,了解系统的整体内存使用情况,以及各个进程的内存占用情况,从而更好地管理和优化系统的内存资源

1.1 free

  • free 命令默认以 KB 为单位显示内存使用情况
  • free -m 命令以 MB 为单位显示内存使用情况
  • free -h 命令以更易读的方式显示内存使用情况,同时自动将内存单位调整为适当的大小(GB、MB 或 KB),使输出更加易读

在这里插入图片描述

输出的参数如下:

  • total: 总内存量
  • used: 已使用的内存量
  • free: 空闲的内存量
  • shared: 用于共享内存的内存量
  • buff/cache: 用于缓冲和缓存的内存量,这包括了Linux系统的文件系统缓存和页缓存等
  • available: 可用内存量,这是系统中实际可以立即分配给进程使用的内存量。它取决于系统内核对内存的管理策略,包括了剩余的空闲内存和缓冲、缓存等可被清理的内存

而对于Swap部分:

  • Swap total: 交换分区总量
  • Swap used: 已使用的交换分区量
  • Swap free: 空闲的交换分区量

可用内存 (available) 是最关键的一项,反映了系统当前可以被应用程序使用的实际内存量

1.2 cat /proc/meminfo

显示系统中内存的详细信息,包括各种内存统计数据

以下是输出的一些常见字段及其含义:

  • MemTotal: 总内存量,表示系统中物理内存的总量

  • MemFree: 空闲内存量,表示系统中当前未被使用的内存量

  • MemAvailable: 可用内存量,表示系统中实际可以立即分配给进程使用的内存量,包括了剩余的空闲内存和缓冲、缓存等可被清理的内存

  • Buffers: 缓冲区使用量,表示用于缓存块设备数据的内存量

  • Cached: 缓存使用量,表示用于缓存文件系统的内存量

  • SwapTotal: 交换分区总量,表示系统中交换分区的总大小

  • SwapFree: 空闲的交换分区量,表示系统中当前未被使用的交换分区大小

  • Dirty: 脏页的数量,表示已被修改但尚未被写入磁盘的内存页数量

  • Writeback: 等待写回磁盘的内存页数量

  • Inactive(anon): 非活跃的匿名内存页数量

  • Inactive(file): 非活跃的文件缓存页数量

  • Unevictable: 无法被移除的内存页数量

  • Mlocked: 被锁定的内存页数量

  • AnonPages: 匿名内存页数量,表示被进程使用但没有对应文件的内存页数量

  • Shmem: 共享内存的大小,表示已被共享的内存页数量

  • HugePages_Total: 总的大页(HugePage)数量

  • HugePages_Free: 空闲的大页数量

  • Hugepagesize: 大页的大小

在这里插入图片描述

1.3 slabtop

显示内核 SLAB 内存分配器统计信息的工具

以下是 slabtop 的一些重要信息以及它们的含义:

  • OBJS: 此处显示的是缓存中对象的数量。
  • CACHE SIZE: 缓存中对象的总大小。
  • OVH: 超额的缓存(overhead)大小,这是用于管理缓存的额外开销。
  • P: 缓存对象的页数。
  • NALLOC: 尚未被分配的对象的数量。
  • ALLOC: 分配的对象的数量。
  • %ALLOC: 分配的对象占总数的百分比。
  • %MEM: 此缓存的内存使用量占总内存的百分比。
  • NAME: 缓存的名称

通过观察 slabtop 的输出,您可以了解系统中各种缓存的使用情况,以及这些缓存所占用的内存量。这对于诊断系统性能问题和了解系统内存使用情况非常有帮助。
在这里插入图片描述

2. 清空内存

在Linux系统中,清空内存通常用于释放系统中的缓存以及未使用的内存页,以便提高系统的性能

这种操作在某些情况下可能很有用,例如在进行性能测试或者遇到系统资源不足的情况下

以下是与清空内存相关的知识点以及相关命令的解释:

  1. sync命令:
    sync 命令用于将缓冲数据写入磁盘,并且等待写入完成。它确保所有未写入的数据都被刷新到磁盘中,从而避免数据丢失或损坏

  2. echo 3 > /proc/sys/vm/drop_caches
    用于通过写入特定的值到 /proc/sys/vm/drop_caches 文件来清空系统中的页缓存、目录项缓存以及索引节点缓存

具体来说,这个命令通过向 /proc/sys/vm/drop_caches 文件中写入以下数字来执行不同的操作:

  • 0:清除页面缓存(page cache)
  • 1:清除目录项和索引节点缓存
  • 2:清除页面缓存以及目录项和索引节点缓存
  • 3:在上述所有内容的基础上执行清空操作

这个命令通常需要 root 权限才能执行。清空缓存可以帮助释放系统中的内存并提高性能,但在生产环境中应谨慎使用,因为这可能会导致性能下降,尤其是在大量磁盘 I/O 操作期间

在这里插入图片描述

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

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

相关文章

Nginx配置php起WoWSimpleRegistration服务

WoWSimpleRegistration服务的git地址: GitHub - TrinityCore/WoWSimpleRegistration: Simple Registration page for TrinityCore/AzerothCore/AshamaneCore/CMangos 下载WoWSimpleRegistration 首先git下载: git clone https://github.com/TrinityC…

嵌入式基础知识-信号量,PV原语与前趋图

本篇来介绍信号量与PV原语的一些知识,并介绍其在前趋图上的应用分析。本篇的知识属于操作系统部分的通用知识,在嵌入式软件开发中,同样会用到这些知识。 1 信号量 信号量是最早出现的用来解决进程同步与互斥问题的机制(可以把信…

基于springboot+vue的贸易行业crm系统

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

Ainx的全局配置

📕作者简介: 过去日记,致力于Java、GoLang,Rust等多种编程语言,热爱技术,喜欢游戏的博主。 📗本文收录于Ainx系列,大家有兴趣的可以看一看 📘相关专栏Rust初阶教程、go语言基础系列…

华硕B660-PLUS主板开机直接BIOS解决方案

一、背景说明 采购了配件,换了主机,主板是华硕的B660,没有显卡。然后把原电脑的固态硬盘和机械硬盘直接移过来。结果开机直接进bios,就是进不了系统,一直进入下面这个页面。 可以读取到两块硬盘,但是没有…

【Windows11】相关问题与解决方案

目录 frp内网穿透windows配置开机启动设置开机自启动内存使用率只有总内存容量的一半kms激活win10无法连接任何密钥管理服务器的解决方法 frp内网穿透windows配置开机启动 参考frp内网穿透windows配置开机启动 设置开机自启动 路径在C:\Users\用户名\AppData\Roaming\Micros…

uniapp实现进度条组件

首先&#xff0c;在uniapp项目中创建一个自定义组件&#xff0c;可以命名为Progress.vue。在Progress.vue中&#xff0c;编写如下代码&#xff1a; <template><view class"progress"><view class"progress-bar" :style"{width: progr…

Matlab 机器人工具箱 符合动力学

文章目录 1 符合化表示1.1 标准DH动力学1.2 改进DH动力学 质量集中在质心1.2 改进DH动力学 质量集中在末端1.3 程序问题1.3.1 Unable to perform assignment because value of type sym is not convertible to double.1.3.2 CAT arguments dimensions not consistent.参考链接1…

YOLOv5独家原创改进:特征融合涨点篇 | 广义高效层聚合网络(GELAN) | YOLOv9

💡💡💡本文独家改进:即结合用梯度路径规划(CSPNet)和(ELAN)设计了一种广义的高效层聚合网络(GELAN),高效结合YOLOv5,实现涨点。 将GELAN添加在backbone和head处,提供多个yaml改进方法 💡💡💡在多个私有数据集和公开数据集VisDrone2019、PASCAL VOC实现…

前端学习之HTML(第一天)

什么是HTML HTML是一种用来描述网页的一种语言&#xff0c;HTML不是一种编程语言&#xff0c;而是一种标记语言。 HTML标签 HTML 标签是由尖括号包围的关键词&#xff0c;比如 <html> HTML 标签通常是成对出现的&#xff0c;比如 <b> 和 </b> 标签对中的…

【微服务-Nacos】一篇文章教你搞定Nacos部署

前面我们提到过&#xff0c;在微服务架构中&#xff0c;Nacos注册中心属于核心组件&#xff0c;通常我们会采用高性能独立服务器进行部署&#xff0c;下面我们一起来看看Nacos部署过程&#xff1a; 1、环境准备 因为Nacos是支持windows和Linux系统的&#xff0c;且服务器操作…

订单超时取消如何实现

方法1&#xff1a; DelayQueue&#xff1a;超时作为排序条件&#xff0c;轮询订单头部&#xff0c;若超市&#xff0c;出队进行超时处理 优点&#xff1a;简单 缺点&#xff1a;不能持久化&#xff0c;并发量低 方法2&#xff1a; 方法四&#xff1a;定时调度&#xff08;什…

基于Springboot的无人智慧超市管理系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的无人智慧超市管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系…

【项目实践】如何解决并发场景下数据一致性问题

1.背景 并发写场景下&#xff0c;由于微服务的系统环境复杂&#xff0c;不可避免的会出现 【机器、缓存、数据库、依赖服务】等出现问题&#xff0c;导致数据不一致的情况产生。 影响大且广&#xff1a; 1、数据不一致问题在线上可能会产生故障 2、数据不一致会导致长尾错误…

group by报错

# 报错&#xff1a;[42000][1055] Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column base.biz_org_rep.ID which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_modeonly_full_grou…

xss.haozi.me:0x08

</style ><script> alert(1)</script>

命名空间(namespace)

定义 在C中&#xff0c;命名空间&#xff08;Namespace&#xff09;是一个特性&#xff0c;用于封装代码并避免名称冲突。命名空间可以看作是一个容器&#xff0c;其中可以包含类、函数、变量、常量、其他命名空间等。通过使用命名空间&#xff0c;我们可以更好地组织代码&…

什么是Docker容器?

Docker是一种轻量级的虚拟化技术&#xff0c;同时是一个开源的应用容器运行环境搭建平台&#xff0c;可以让开发者以便捷方式打包应用到一个可移植的容器中&#xff0c;然后安装至任何运行Linux或Windows等系统的服务器上。相较于传统虚拟机&#xff0c;Docker容器提供轻量化的…

Linux设备模型(十) - bus/device/device_driver/class

四&#xff0c;驱动的注册 1&#xff0c;struct device_driver结构体 /** * struct device_driver - The basic device driver structure * name: Name of the device driver. * bus: The bus which the device of this driver belongs to. * owner: The module own…

selenuim【1】$x(‘xpath’)、WebDriverWait()、try/assert

文章目录 1、执行driver webdriver.Chrome()后很久才打开浏览器2、浏览器多元素定位 $x(‘xpath语法’)3、打开浏览器driver.get("网址")执行了很久才开始定位元素&#xff1a;等待&#xff08;1&#xff09;driver.set_page_load_timeout(t)&#xff08;2&#xff…