详细分析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命令来实时监视系统的进程和其内存使用情况
# 每个进程的内存占用情况以及系统总体的内存使用情况。
tophtop
  • 内存交换分区(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 操作期间

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Rabbitmq消息丢失-消费者消息丢失(二)

说明:消费端在处理消息的过程中出现异常,例如:业务逻辑异常,或者消费者被停机,或者网络断开连接等,以上等情况使消息没有得到正确恰当的处理,也会使消息丢失。 分析:分析就是说明中…

第 387 场 LeetCode 周赛题解

A 3069. 将元素分配到两个数组中 I 模拟 class Solution { public:vector<int> resultArray(vector<int> &nums) {vector<int> r1{nums[0]}, r2{nums[1]};for (int i 2; i < nums.size(); i) {if (r1.back() > r2.back())r1.push_back(nums[i]);e…

WPF中如何设置自定义控件(二)

前一篇文章中简要讲解了圆角按钮、圆形按钮的使用,以及在windows.resource和app.resource中设置圆角或圆形按钮的样式。 这篇主要讲解Polygon(多边形)、Ellipse(椭圆)、Path(路径)这三个内容。 Polygon 我们先看一下的源码: namespace System.Windows.Shapes { pu…

Vue3学习记录(三)--- 组合式API之生命周期和模板引用

一、生命周期 1、简介 ​ 生命周期&#xff0c;指的是一个 Vue 实例从创建到销毁的完整阶段&#xff0c;强调的是一个时间段。 ​ 生命周期钩子函数&#xff0c;指的是 Vue 实例提供的内置函数&#xff0c;函数的参数为一个回调函数。这些钩子函数会在实例生命周期的某些固定…

Spring(22) Spring中的9种设计模式

目录 一、简单工厂模式&#xff08;Simple Factory&#xff09;二、工厂方法模式&#xff08;Factory Method&#xff09;三、单例模式&#xff08;Singleton&#xff09;四、适配器模式&#xff08;Adapter&#xff09;五、代理模式&#xff08;Proxy&#xff09;七、观察者模…

【ARM Trace32(劳特巴赫) 高级篇 21 -- SystemTrace ITM 使用介绍】

文章目录 SystemTrace ITMSystemTrace ITM 常用命令Trace Data AnalysisSystemTrace ITM CoreSight ITM (Instrumentation Trace Macrocell) provides the following information: Address, data value and instruction address for selected data cyclesInterrupt event info…

就业班 2401--3.4 Linux Day10--软件管理

一、软件管理 导语&#xff1a; 安装软件 rpm yum 源码安装 ​ 卸载软件 rpm介绍 rpm软件包名称: 软件名称 版本号(主版本、次版本、修订号) 操作系统 -----90%的规律 #有依赖关系,不能自动解决依赖关系。 举例&#xff1a;openssh-6.6.1p1-31.el7.x86_64.rpm 数字前面的是名…

SkyWalking链路追踪上下文TraceContext的追踪身份traceId生成的实现原理剖析

结论先行 SkyWalking 通过字节码增强技术实现&#xff0c;结合依赖注入和控制反转思想&#xff0c;以SkyWalking方式将追踪身份traceId编织到链路追踪上下文TraceContext中。 是不是很有趣&#xff0c;很有意思&#xff01;&#xff01;&#xff01; 实现原理剖析 TraceConte…

Kubernetes基础(二十七)-nodePort/targetPort/port/containerPort/hostPort

1 nodePort/targetPort/port/containerPort 1.1 实现层级 1.2 配置方式 ########service########### apiVersion: v1 kind: Service metadata: labels: name: app1 name: app1 namespace: default spec: type: NodePort ports: - <strong>port: 8080 t…

xss.haozi:0x00

0x00没有什么过滤所以怎么写都没有关系有很多解 <script>alert(1)</script>

嵌入式驱动学习第二周——Linux内核打印

前言 这篇博客来聊一聊Linux内核打印。 嵌入式驱动学习专栏将详细记录博主学习驱动的详细过程&#xff0c;未来预计四个月将高强度更新本专栏&#xff0c;喜欢的可以关注本博主并订阅本专栏&#xff0c;一起讨论一起学习。现在关注就是老粉啦&#xff01; 目录 前言1. dmesg指令…

1.1_2 性能指标——速率、带宽、吞吐量

文章目录 1.1_2 性能指标——速率、带宽、吞吐量&#xff08;一&#xff09;速率&#xff08;二&#xff09;带宽&#xff08;三&#xff09;吞吐量 1.1_2 性能指标——速率、带宽、吞吐量 &#xff08;一&#xff09;速率 速率即数据率或称数据传输率或比特率。 速率就是“快…