Post

Linux内存(手动释放cache)

[codesphere 摘要生成异常:Server returned HTTP response code: 503 for URL: https://api.master-jsx.top/v1/chat/completions]

学无止境 阅读 488 点赞 1 评论 0

1、查看内存

free

$ free -h
             total       used       free     shared    buffers     cached
Mem:          125G        89G        36G        92K       212M        74G
\-/+ buffers/cache:        14G       111G 
Swap:         7.5G       1.8G       5.6G 

cat /proc/meminfo

如果你想得到更加相近的信息可以使用cat /proc/meminfo,直接看硬件的统计数据。

MemTotal:       131755760 kB
MemFree:        38151680 kB
Buffers:          217564 kB
Cached:         78274852 kB
SwapCached:         6072 kB
Active:         29647292 kB
Inactive:       50949268 kB
Active(anon):    2073604 kB
Inactive(anon):    30640 kB
Active(file):   27573688 kB
Inactive(file): 50918628 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       7812092 kB
SwapFree:        5889924 kB
Dirty:               804 kB
Writeback:             0 kB
AnonPages:       2100436 kB
Mapped:           442904 kB
Shmem:                92 kB
Slab:           12017476 kB
SReclaimable:   11910264 kB
SUnreclaim:       107212 kB
KernelStack:       31184 kB
PageTables:        37492 kB
NFS\_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    73689972 kB
Committed\_AS:   25708340 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      491656 kB
VmallocChunk:   34290629896 kB
HardwareCorrupted:     0 kB
AnonHugePages:    694272 kB
HugePages\_Total:       0
HugePages\_Free:        0
HugePages\_Rsvd:        0
HugePages\_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:        4096 kB
DirectMap2M:     2019328 kB
DirectMap1G:    132120576 kB

这里我 们看到,内存总数total=125G,已使用used=89G,空闲free=36G,cache=78G。其他类型不等。

先解释一下:

total 内存总数
used 已经使用的内存数
free 空闲的内存数
shared 多个进程共享的内存总额
buffers Buffer Cache和cached Page Cache 磁盘缓存的大小
\-buffers/cache (已用)的内存数:used - buffers - cached
+buffers/cache(可用)的内存数:free + buffers + cached
可用的memory\=free memory+buffers+cached

这里可以看到我们使用了89G,其中cache占用了78G。这个占用有点高,并且不会自动释放。

2、什么是cache

为了提高磁盘存取效率,Linux做了一些精心的设计,除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换),还采取了两种主要Cache方式:Buffer Cache和Page Cache。前者针对磁盘块的读写,后者针对文件inode的读写。这些Cache有效缩短了 I/O系统调用(比如read,write,getdents)的时间。

cached主要负责缓存文件使用, 日志文件过大造成cached区内存增大把内存占用完 .

Free中的buffer和cache:(它们都是占用内存):
buffer : 作为buffer cache的内存,是块设备的读写缓冲区
cache: 作为page cache的内存, 文件系统的cache
如果 cache 的值很大,说明cache住的文件数很多。

3、手动释放cache

/proc是一个虚拟文件系统,我们可以通过对它的读写操作做为与kernel实体间进行通信的一种手段。也就是说可以通过修改/proc中的文件,来对当前kernel的行为做出调整。那么我们可以通过调整/proc/sys/vm/drop_caches来释放内存。

释放方法有三种(系统默认值是0,释放之后你可以再改回0值 ):

To free pagecache:  echo 1 > /proc/sys/vm/drop_caches

To free dentries and inodes:  echo 2 > /proc/sys/vm/drop_caches

To free pagecache, dentries and inodes:  echo 3 > /proc/sys/vm/drop_caches

注意:在清空缓存前我们需要在linux系统中执行一下sync命令,将缓存中的未被写入磁盘的内容写到磁盘上

具体的操作如下

\# 先查看一下释放cache信令值, 此时应该是0
$ cat /proc/sys/vm/drop\_caches 
0

# 将缓冲区写入磁盘, 当需要停止系统的时候, 保证文件系统的完整性
$ sync

# 释放cache, 这个命令可能要花费一点时间, 请耐心等待
$ echo 3 > /proc/sys/vm/drop\_caches
# 再看一眼
$ cat /proc/sys/vm/drop\_caches 
3

再来看一眼内存

$ free -h
             total       used       free     shared    buffers     cached
Mem:          125G       3.5G       122G        88K        13M       444M
\-/+ buffers/cache:       3.1G       122G 
Swap:         7.5G       1.8G       5.6G 

cache已经释放,free=122G。

继续阅读

全部归档
vue2学习笔记
vue2学习笔记

文章系统总结了Vue基础核心概念。首先介绍了Vue实例的创建与模板语法,包括插值与指令的使用。接着区分了单向与双向数据绑定,并讲解了el与data的两种写法。文章还阐述了MVVM模型及数据代理原理,即通过Object.defineProperty实现data属性的响应式操作。最后,详细说明了Vue的事件处理机制,涵盖事件绑定、常用修饰符(prevent、stop等)及键盘事件的别名规则。

形象解说23种设计模式
形象解说23种设计模式

本文总结了23种设计模式的核心思想,涵盖创建型、结构型与行为型模式。创建型模式如工厂方法、抽象工厂、建造者模式分别处理对象创建的灵活性、产品族构建及过程与表象分离;原型模式通过复制创建对象,单例确保唯一实例。结构型模式中,适配器解决接口兼容,桥梁分离抽象与实现,合成管理树形结构,装饰动态扩展功能,门面简化子系统,享元共享细粒度对象,代理控制对象访问。行为型模式里,责任链传递请求,命令解耦请求与执行,解释器解析语言,迭代遍历聚集,调停者协调交互,备忘录存储状态,观察者实现一对多通知,状态响应内部行为变化,策略封装算法,模板方法定义流程框架,访问者封装数据结构操作。各模式通过封装变化、分离关注点,提升系统灵活性与可维护性。

评论