Linux中free命令各字段详解以及内存和cache相关知识整理

Linux命令·free free命令可以显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer 阅读详情

今天在跑一个python排序程序的时候,想通过top命令检查程序消耗内存的变化。很奇怪,检测到的内存使用比预期的要高不少。刚好借这个机会整理下Linux中内存管理的一些知识。

free命令

通过free命令可以查看当前系统的内存使用情况,参数-h可以将单位自动转换的比较友好

[root@testmachine tools]# free -h
              total        used        free      shared  buff/cache   available
Mem:           3.7G        1.8G        163M        9.1M        1.8G        1.6G
Swap:          2.0G        925M        1.1G

先看第一行Mem部分的内容

  • total - 物理内存的总和
  • used - 已经被应用程序使用的内存大小
  • free - 完全空闲的内存大小
  • shared - 被共享的内存
  • buff/cache - 被当作缓存使用的内存大小
  • available - 可以被新的应用程序使用的内存大小

这里可能有朋友会有疑问,你电脑3.7G的内存怎么只剩下了163M,是不是系统出了问题?或者为什么只有163M内存可用,但新的程序却又可以使用1.6G的内存?这些疑问我们下面都会解答。

再来看第二行Swap,交换区

  • total - 可被用作swap的硬盘总大小
  • used - 被使用的swap大小
  • free - 可被使用的swap大小

至于什么是交换区,有什么用,后面我们也会单独说。

内存映射与页

先来说说内存使用的基本逻辑。

每个进程都有自己的独立寻址空间,也就是说某进程创建的变量不会被另一个进程访问到。进程能寻址的地址叫做虚拟内存,针对32位寻址的机器,每个进程有2^32个寻址地址,也就是4GB,而64位寻址的机器,理论上有2^64个寻址地址。但是受限于主板和地址线个数,目前内存条基本都是16GB的(2020年7月),物理内存条对应的是物理内存。

那么问题就来了,虚拟内存和物理内存之间大小明显不匹配,物理内存似乎完全不够用,这是怎么回事?

解答这个问题前,先来聊一聊页(Page)。

计算机会对虚拟内存和物理内存按照最小单位4KB进行处理,虚拟内存中的4KB称为页(Page),物理内存中的4KB称为页帧(Page Frame),页和页帧之间的对应关系称为内存映射。所有的进程共享同一物理内存,每个进程也只会把目前需要的虚拟内存地址映射到物理内存中。

进程去页中查询所需要的数据,而真正的数据都在页帧中,所以还需要一个页表(Page Table)去管理这种对应关系以便进程去查找。页表的每一条记录分为两部分,第一部分记录此页是否在物理内存中,第二部分记录物理内存页帧的地址(如果存在的话)。

当进程想要访问某个虚拟地址,但是没有在页表中查到物理内存的地址,说明数据还没有读到内存中,这叫做缺页异常(Page Fault)。此时进程会将数据从硬盘读到物理内存中,并更新页表。假如从硬盘读入内存的时候,内存中的页帧都被用了,就会找一个使用较少的页帧进行覆盖。

所以就可以回答上面的问题了。虽然每个进程有自己独立的虚拟内存地址,但是只是把需要用到的部分映射到物理内存,有了新的需求再去映射新的。所以虽然所有进程都共享物理内存,也会彼此独立。

那么内存中使用完毕的页帧会被马上收回吗?答案是并不会。这也是为什么好像机器上没有运行啥程序但是还是显示free的内存很少的原因,因为大量的内存都是之前使用过,但是并没有释放的部分,这就是buffer和cache。

buffer和cache

先来看下面这个现象。我这里有一个1.1GB大小的文件,同样是读取整个文件,第一次读取花了1.3秒,而以后再读取只需要0.2秒

[root@testmachine linkedlist]# ll -h bigfile.txt 
-rw-rw-r-- 1 fuhx fuhx 1.1G Jul 17 17:37 bigfile.txt
[root@testmachine linkedlist]# free -h
              total        used        free      shared  buff/cache   available
Mem:           3.7G        1.7G        1.8G         17M        227M        1.7G
Swap:          2.0G        922M        1.1G
[root@testmachine linkedlist]# time cat bigfile.txt > /dev/null 

real	0m1.317s
user	0m0.006s
sys	    0m1.306s
[root@testmachine linkedlist]# time cat bigfile.txt > /dev/null 

real	0m0.236s
user	0m0.006s
sys	    0m0.229s
[root@testmachine linkedlist]# time cat bigfile.txt > /dev/null 

real	0m0.211s
user	0m0.013s
sys	    0m0.198s
[root@testmachine linkedlist]# free -h
              total        used        free      shared  buff/cache   available
Mem:           3.7G        1.7G        729M         17M        1.3G        1.6G
Swap:          2.0G        922M        1.1G

同样值得注意的是,读取文件前后,free部分的内存下降了约1GB,而buff/cache部分的内存上升了约1GB。

这说明整个文件都被缓存在了内存中,除了第一次调用需要从硬盘读到内存,以后每次都是直接从内存读取,所以会快很多

buffer和cache一个是缓冲区一个是缓存,不过这里都可以理解成内存和硬盘之间交互的一个中间层。

page cache

针对用页来管理的内存,其缓存被称为page cache。其主要是在进程对文件进行读写操作时发挥作用。

用户读写与page cache

读文件时,用户发起read操作,进程查找页表,如果有映射到页帧,则直接返回页帧中返回的内容,如果没有匹配的页帧,则触发缺页异常,从硬盘读取数据到页帧进行缓存,read操作完成。

写文件时,用户发起write操作,进程查找页表,如果有映射到页帧,直接写到页帧中,此时的页被称为脏页(Dirty Page),如果没有匹配的页帧,则创建页帧写入数据。用户write操作完成。此后操作系统有两种方式将脏页回写到硬盘,用户手动调用fsync()或者由pdflush进程定时将脏页写回。

不管是读还是写,有对应的cache称为命中,命中率是判断某进程缓存好换的关键指标。

这也就回答了上面的疑问,电脑3.7G的内存怎么只剩下了163M,是不是系统出了问题?并不是电脑出了问题,而是Linux的内存管理机制就是这样,尽可能地对硬盘数据进行缓存,以加快读写速率。这一点跟Windows不一样。

当有新的程序要申请内存时,这些被缓存占用的内存会被释放,这就是为什么available的内存会将缓存也算进去。

当然,虽然不建议,但是如果想手动清除cache也是可以的。

手动清理cache

通过修改内核参数可以达到删除cache的目的

[root@testmachine tools]# free -h
              total        used        free      shared  buff/cache   available
Mem:           3.7G        1.8G        163M        9.1M        1.8G        1.6G
Swap:          2.0G        925M        1.1G
[root@testmachine tools]# echo 3 > /proc/sys/vm/drop_caches 
[root@testmachine tools]# free -h
              total        used        free      shared  buff/cache   available
Mem:           3.7G        1.7G        1.7G        9.1M        221M        1.7G
Swap:          2.0G        925M        1.1G

Linux中一切皆文件,内核的各种设置也以文件形式提供操作API,这就是/proc/sys/目录。临时的修改只需要将值echo到文件即可,因为是直接作用于内存所以马上生效,但是机器重启就会消失。永久生效需要在/etc/sysctl.conf或者是/etc/sysctl.d/xxx.conf中将目录换成点号进行赋值。例如echo 1 > proc/sys/net/ipv4/ip_forward就写成net.ipv4.ip_forward=1然后跑命令sysctl -p从文件生效

关于内核参数调优,可以参考这一篇博客,和内存相关的都在/proc/sys/vm/目录下

首先,这种清理也并不是没有成本的。前面说过用户执行写操作会产生脏页,如果存在脏页,系统要先写回到硬盘才能回收内存。所以清除缓存通常伴随着高I/O。

同时可以发现cache并不会完全清除,这是因为有些cache不能被系统回收,例如tmpfs,进程间的通讯用的共享内存等等,更多细节可以参考Linux 内存中的Cache,真的能被回收么?。

再次强调,Linux的缓存是不需要手动去清理的。

内存使用增多排查步骤

如果发现内存在一点点被蚕食,可以按照这篇文章推荐的步骤来排查

  1. 通过 free,发现大部分内存都被缓存占用后
  2. 可以使用 vmstat 或者 sar观察一下缓存的变化趋势,确认缓存的使用是否还在继续增大。
  3. 如果继续增大,则说明导致缓存升高的进程还在运行,那你就能用缓存 / 缓冲区分析工具(比如 cachetop、slabtop 等),分析这些缓存到底被哪里占用。
  4. 排除缓存 / 缓冲区后,你可以继续用 pidstat 或者 top,定位占用内存最多的进程。
  5. 找出进程后,再通过进程内存空间工具(比如 pmap),分析进程地址空间中内存的使用情况就可以了。
  6. 通过 vmstat 或者 sar 发现内存在不断增长后,可以分析中是否存在内存泄漏的问题。比如你可以使用内存分配分析工具 memleak ,检查是否存在内存泄漏。如果存在内存泄漏问题,memleak 会为你输出内存泄漏的进程以及调用堆栈

内存泄漏:memory leak,内存使用完毕没有回收,导致该区域永远无法被后面的进程使用的现象

swap

下面来说说swap,也就是交换区。

所谓的swap,就是将一部分硬盘当作内存来使用。内存中不常用的一部分会被交换到swap,下次再使用的时候再交换回内存,分别叫做换出和换入。

既可以在分区的时候就设定一块盘做为swap,例如我电脑这样

[root@testmachine shm]# fdisk -l

Disk /dev/sda: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000c328c

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    41943039    19921920   8e  Linux LVM
/dev/sda3        41943040   104857599    31457280   83  Linux

Disk /dev/mapper/centos-root: 49.4 GB, 49387929600 bytes, 96460800 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/centos-swap: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

或者像下面这样创建一个文件做为swap。

文件作为swap分区

1.创建要作为swap分区的文件:增加1GB大小的交换分区,则命令写法如下,其中的count等于想要的块的数量(bs*count=文件大小)。
dd if=/dev/zero of=/root/swapfile bs=1M count=1024

2.格式化为交换分区文件:
mkswap /root/swapfile #建立swap的文件系统

3.启用交换分区文件:
swapon /root/swapfile #启用swap文件

4.使系统开机时自启用,在文件/etc/fstab中添加一行:
/root/swapfile swap swap defaults 0 0

swappiness

有一个内核参数如下

[root@testmachine shm]# cat /proc/sys/vm/swappiness 
30

这是一个介于0-100的配置项,用来表示系统进行内存回收时候的偏好。数值越大,在内存回收时越偏好使用swap,也就是将一些不常用的页换出;数值约小,在内存回收时越拒绝使用swap,也就是更倾向将缓存直接释放或者脏页写回硬盘再释放。

通常为了提升性能,建议将这个值设置为0。

内存管理优化

在这篇文章中还推荐了很多内存优化的工具,像cachetop,vmstat等,以及一些优化思路。做为补充内容放在这里了。

我是T型人小付,一位坚持终身学习的互联网从业者。喜欢我的博客欢迎在csdn上关注我,如果有问题欢迎在底下的评论区交流,谢谢。

linux内存 同时堆是一个连续空间,并且堆内碎片由于没有归还 OS ,如果可重用碎片,再次访问该内存很可能不需产生任何系统调用和缺页中断,这将大大降低 CPU 的消耗。2.malloc小于128k的内存,使用brk分配内存, malloc大于128k的内存,使用mmap分配内存,在堆和栈之间找一块空闲内存分配(对应独立内存,而且初始化为0)brk分配的内存需要等到高地址内存释放以后才能释放(例如,在B释放之前,A是不可能释放的,这就是内存碎片产生的原因,什么时候紧缩看下面),而mmap分配的内存可以单独释放。 阅读详情

相关推荐

《网络安全自学教程》- 工作中常用的Linux命令

100个Linux常用命令及常用操作。

wangyuxiang946的博客 9398

linux下的buff/cache内存占用过高-手动清除释放内存

linux下的buff/cache内存占用过高-手动清除释放内存

Mrguo007的博客 8922

单片机通信总述——理论部分(CAN、串口、SPI、I2C等)

并行通信:传输原理:数据各个位同时传输;优点:速度快; 缺点:占用引脚资源多。是指使用 8、16、32 及 64 根或更多的数据线(有多少信号为就需要多少信号位)进行传输的通讯方式,可以同一时刻传输多个数据位的数据。串行通信: 传输原理:数据按位顺序传输;优点:占用引脚资源少; 缺点:速度相对较慢。是指设备之间通过一根数据信号线,地线以及控制信号线,按数据位形式一位一位地传输数据的通讯方式,同一时刻只能传输一位(bit)数据。 单工: 数据传输只支持数据在一个方向上传输。信息只能单方向传输的工作方式,一

qq_42475191的博客 1万+

Linux 内存中的 Cache 真的能被回收么?

Linux 内存中的 Cache 真的能被回收么? 在 Linux 系统中,我们经常用 free 命令来查看系统内存的使用状态。在一个 RHEL6 的系统上,free 命令的显示内容大概是这样一个状态: [root@tencent64 ~]# free total used free s...

weixin_34357267的博客 1581

基于STM32F334C8T6的四开关Buck-Boost双向DC-DC电源设计与实现(附源码、仿真与计算书)

本文详细介绍了基于STM32F334C8T6的四开关Buck-Boost双向DC-DC电源设计方案。该设计利用STM32的高分辨率定时器(HRTIM)实现精确PWM控制,支持Buck、Boost和Buck-Boost三种工作模式自动切换,具备双向能量流动能力。通过PSIM仿真和Mathcad计算书进行参数优化,实测效率达95.8%,适用于新能源系统和电池管理等场景。

www00的博客 524

展锐双摄帧同步实战:从配置到调试的完整避坑指南

本文深入剖析了在展锐平台上实现双摄帧同步的完整流程与核心技术。详细对比了硬件帧同步与软件帧同步的差异、应用场景及核心挑战,提供了从XML配置、驱动层适配到调试验证的实战指南。重点强调了硬件帧同步必须与固定帧率强绑定这一关键避坑点,并分享了针对景深虚化等场景的同步质量验证方法及长稳测试策略。

kiwi8的博客 401

Linux 查询内存的命令 free -h 中Swap与Memory的区别

Swap与Memory区别 对于memory没什么可说的就是机器的物理内存,读写速度低于cpu一个量级,但是高于磁盘不止一个量级。所以,程序和数据如果在内存的话,会有非常快的读写速度。但是,内存的造价是要高于磁盘的,虽然相对来说价格一直在降低。除此之外,内存的断电丢失数据也是一个原因说不能把所有数据和程序都保存在内存中。既然不能全部使用内存,那数据还有程序肯定不可能一直霸占在内存中。 当内存没有可用的,就必须要把内存中不经常运行的程序给踢出去。但是:踢到哪里去?这时候swap就出现了。swap全称...

JineD的博客 1万+

SLAM轨迹评估神器evo实战:从GPS到TUM格式的完整转换指南(附Python代码)

本文详细介绍了如何使用evo工具将GPS数据转换为TUM格式,以便进行SLAM轨迹评估。通过Python代码实现GPS到笛卡尔坐标的精确转换,并提供了完整的处理流程和实战案例,帮助开发者轻松完成从原始GPS数据到精确轨迹评估的全过程。特别适用于ORB-SLAM等视觉SLAM算法的性能验证。

weixin_29074295的博客 292

free -g cached满了,怎么释放buff/cache的内存占用。

测试服务器的内存,本来就不多,free -g,看一下,发现free的内存很少,但是,有个buff/cache的内存,却占了不少,查询发现,可以使用下面的命令释放这个缓存。根据需要清除缓存,设置后系统不允许重新设为0了,不过重启系统后默认又是为0。可以修改/proc/sys/vm/drop_caches 文件来清除缓存。再执行下free -g 可以看到cached变小了,free变多了。2表示清空inode和目录树缓存;3表示清空所有的缓存。

请叫我大师兄 4031

kaggle-NeurIPS - Open Polymer Prediction 2025-0.069

本文摘要: 本研究基于多任务学习框架,开发了聚合物物理化学性质预测模型,能够根据SMILES字符串同步预测玻璃化转变温度(Tg)、分数游离体积(FFV)等5种关键性质。针对数据缺失率高、样本不均衡等挑战,采用"先补充后扩充"策略整合多源数据,并融合RDKit分子描述符、ChemBERTa语义特征和自编码器特征构建多维度表征。模型采用硬参数共享架构,结合动态加权损失函数和早停机制,在验证集上表现出色,其中密度预测R²达0.92。研究为聚合物性能的高通量预测提供了有效解决方案,对材料智能设计具有重要参考价值。

2302_78976920的博客 782

RK3588平台-ES8388音频驱动调试与设备树配置实战

本文详细解析了在RK3588平台上调试ES8388音频驱动的实战过程。内容涵盖Linux音频驱动的三层架构(Machine、Platform、Codec),并重点提供了设备树(DTS)的完整配置示例,包括I2C节点、声卡节点及音频路由设置。文章还分享了驱动加载验证、amixer调试命令以及常见问题(如无声、变调)的排查思路,旨在帮助开发者快速完成RK3588与ES8388的音频系统集成。

mango的博客 805

Linux内存管理排查实战:free、top、pmap、vmstat命令行工具详解

内存管理是操作系统核心机制之一,也是服务器稳定运行的基石。面对服务卡顿、进程被杀、Swap飙高等问题,盲目重启或加内存往往治标不治本,真正的解决之道是深入理解系统内存的工作原理。虚拟内存、分页机制、Page Cache与Swap交换区共同构成了复杂的内存生态,而命令行工具正是观测这一生态的窗口。free命令能快速判断整机水位,top和ps则展示进程实时占用,pmap可剖析单个进程地址空间,vmstat则揭示换页行为。掌握这些工具,就能基于RSS、PSS、RssAnon等指标区分真性泄漏与缓存堆积,定位OOM

weixin_34072458的博客 341

使用LaTex写IEEE trans 论文的参考文献(bib)

(1)在.TeX文件的最下方添加这几行内容,主要为生成tran形式的参考文献,第二行为参考文献名称,我命名为reference.bib,所以写的是reference,要根据自己的命名改写。(5)如果要在文中引用的话,就在.tex文件中添加\cite{},中括号里面内容为方框圈出来部分,但引用之后,在参考文献后面会出现[1]这样的标识,不知道为什么。(4)完成(3)以后,点击工具-命令-LaTeX,编译,然后按照此步骤LaTeX-bibtex-LaTeX-LaTeX,就可以完成参考文献的导入。

qq_45884215的博客 6258

Linux内存排查:free、available、buff/cache与OOM

操作系统的内存管理核心在于区分真实空闲、可回收缓存与进程工作集。Linux 会把空闲物理内存尽量用于页缓存,因此 free 偏低常是正常现象;真正应关注 available,它估算在不触发 swap 的前提下还能分配的内存量。buff/cache 虽大多可回收,但 tmpfs 的 Shmem、脏页和不可回收 slab 会带来水分。理解这些原理后,工程上才能通过 free、vmstat、ps、slabtop、cgroup 接口判断内存压力,应对 OOM Killer、进程 RSS 只涨不跌、swap 换入换出

weixin_32596893的博客 207

扣子Coze工作流教程:采集公众号爆文,一键仿写自动发布

通过本教程,你学会了如何利用扣子(Coze)平台构建一个完整的公众号文章自动处理工作流。这个系统不仅能够大幅提升内容产出效率,还能通过AI二创保持内容新鲜度和原创性。最佳实践建议:初次使用时,建议先保存为草稿而不是直接发布,以便人工审核;从简单的工作流开始,逐步增加复杂度;定期检查工作流运行日志,优化节点配置。自动化内容创作是新媒体运营的未来趋势,掌握这项技能将使你在数字内容领域占据显著优势。

互联网架构师笔记 1232

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

linux内存利用率计算以及swap的设置

linux内存利用率计算以及swap的设置

niceHack的博客 7148

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Linux常用命令

Linux常用命令,有关文档编辑、内存、进程

qq_45887317的博客 988

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Linux内存管理实战:从free、vmstat到pmap的排查全攻略

内存管理是操作系统核心机制之一,通过虚拟内存抽象实现物理内存的高效分配与回收。掌握内存排查命令,不仅有助于理解内核工作原理,也是定位系统性能瓶颈的关键技能。从全局快照的free命令到动态监控的vmstat,再到进程级细分的top、pmap,每一层工具都对应着不同粒度的观察视角。实际运维中,物理内存不足常表现为Swap换入换出频繁,而进程内存泄漏则需要结合RSS、VSZ等指标深入分析。对于C/C++开发者,valgrind与AddressSanitizer能够有效检测堆越界与内存泄漏问题;对于系统级异常,内核

weixin_34348174的博客 227

x-cmd v0.8.15 深度解析:AI助手稳定性与Linux内存专家模式

在命令行工具与自动化工作流领域,稳定性与深度系统洞察是提升开发效率的核心。其原理在于通过优化通信协议、重试机制与状态管理,确保跨平台服务集成的鲁棒性;同时,通过增强系统原生工具,提供内核级别的资源诊断视图,降低性能调优门槛。这为构建高可用的AI自动化流程和进行深度的系统性能分析提供了坚实的技术基础。具体到应用场景,例如将AI助手无缝接入即时通讯工具进行场景化交互,或对服务器内存进行微观诊断以排查泄漏,都依赖于工具链在这两个方向的持续进化。本次x-cmd v0.8.15版本的更新,正是聚焦于claw AI助手

weixin_34242819的博客 429

Linux命令面试全攻略:21条高频命令原理与坑点详解

Linux命令是系统运维与开发面试中的基础技能,掌握核心命令的用法与原理远比死记硬背重要。从常用文件操作、文本过滤到进程与网络排查,命令背后涉及文件系统、inode、权限模型、信号机制等底层概念。理解这些原理,才能应对“为什么删除文件用rm -rf有风险”“find查找文件如何组合条件”“free -h中buff/cache与available的区别”等高频问题。在实际场景中,无论是清理磁盘日志、定位端口占用,还是打包传输文件,都需要将多命令串联使用。本文以21条高频Linux命令为主线,涵盖linux基础

weixin_34331102的博客 430

在线Linux环境:核查真实资源,识别15G内存与10PB存储的宣传误区

虚拟化与云计算技术让用户能够通过浏览器快速获取远程Linux终端,在线实验平台作为云端虚拟机或容器服务的典型形态,本质上是将CPU、内存、磁盘等物理资源进行池化与配额分配。理解虚拟化层的资源调度机制,掌握系统级硬件核查命令,是评估平台真实服务水平的关键路径。通过free、lscpu、df等基础工具,用户可验证内存上限、逻辑核数及文件系统类型,进而区分本地盘、网络文件系统与对象存储之间的容量差异。这类操作不仅适用于学习环境测评,也为云服务器选型、容器资源调优提供了通用的排障思路。当宣传页面显示超大规格时,结合

weixin_34221073的博客 471

Linux内存原理、监控命令与调优实战解析

内存管理是Linux系统稳定运行的基础,理解虚拟内存、页缓存与swap的协作机制,是排查系统性能瓶颈的关键。在物理内存有限的情况下,内核通过页表映射、缺页异常与缓存回收机制,实现高效的内存分配与回收。熟练掌握free、vmstat、smaps等监控工具,能够精准定位进程内存占用与泄漏迹象,避免因内存不足引发OOM Killer误杀。当业务部署涉及JVM与容器场景时,还需关注堆外内存、CGroup限额与共享内存的边界问题,防止容器被无声杀掉。本文从监控命令到内核参数调优,整理真实踩坑案例,帮助工程师快速构建内

weixin_33462927的博客 296

Linux,常用命令,看这篇就够了

linux 常用命令大全

qq_48721706的博客 4万+

C++高并发内存池实现:三层架构设计与性能优化实践

内存管理是C++系统编程的核心基础,其性能直接影响高并发应用的吞吐量和响应延迟。传统系统分配器在多线程环境下因全局锁竞争导致性能瓶颈,而内存池技术通过预分配和复用内存块来减少系统调用和锁争用。其核心原理在于将内存分配过程分层,结合数据结构优化与细粒度锁策略,从而在高并发场景下实现高效、低碎片的内存分配。这一技术对于后端服务、游戏服务器、数据库等需要频繁内存操作的场景具有重要价值。本文基于tcmalloc和mimalloc的设计思想,详细解析了一个采用“线程本地缓存+中心缓存+页堆”三层架构的高并发内存池实现

weixin_30947043的博客 348

Linux命令大全:从基础到实战的系统管理指南

Linux命令是系统管理和运维工作的基础工具,其核心价值在于通过简洁的文本界面实现高效的系统操作。从原理上看,Linux命令遵循统一的语法结构,由命令主体、选项参数和操作对象组成,这种设计哲学体现了Unix工具的小而美理念。在技术实现层面,命令通过管道和重定向机制实现组合使用,大大提升了工作效率。常见的应用场景包括文件操作、文本处理、系统监控和网络配置等。其中grep、sed、awk等文本处理三剑客配合正则表达式,能够高效完成日志分析和数据提取任务。本指南特别整理了ls -lhtr、find -exec等实

weixin_33922670的博客 383

Cross-Cache Overflow 与页级堆风水:ctf-wiki 内核 Pwn 中的跨 kmem_cache 堆溢出利用

> **导读**:本文基于 ctf-wiki 中文仓库中 [cross-cache-overflow.md](https://link.gitcode.com/i/c7da368777067e4d979f977a6811b8a9) 展开,系统讲解两种联合使用的内核堆利用手法——**Cross-Cache Overflow(跨缓存溢出)** 与 **Page-level Heap Fengshui(

gitblog_01121的博客 1001
上一篇: python3利用归并算法对超过内存限制的超大文件进行排序
下一篇: python3实现二分法查找并返回元素位置
T型人小付
博客等级 码龄7年 433粉丝 210原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值