linux 手动释放内存
在 Linux 系统中,内存管理通常由系统自动处理,但在某些情况下,手动释放内存可能是必要的。例如,当业务应用比较繁忙时会频繁存取文件,物理内存会被缓存大量占用,有时会出现内存不足的情况发生,甚至会导致系统性能下降。此时可主动在业务闲时手动释放内存。
一、首先查看当前内存使用情况
使用 free -m 命令查看,输出结果包括总内存、已使用内存、空闲内存、共享内存、缓冲区和缓存等信息。
二、然后执行如下步骤手动释放内存
■ 查看当前 drop_caches 的值
cat /proc/sys/vm/drop_caches
可能会提示权限不足,默认值为 0,表示不释放缓存
■ 运行 sync 命令
sync
该命令将所有未写的系统缓冲区写到磁盘中,确保文件系统的完整性
■ 手动释放内存
echo 1 > /proc/sys/vm/drop_caches
drop_caches 是 0-3 之间的数字,代表不同的含义:
0:不释放(系统默认值)
1:释放页缓存
2:释放 dentries 和 inodes
3:释放所有缓存
■ 还原配置
echo 0 > /proc/sys/vm/drop_caches
释放完内存后,将 drop_caches 的值改回 0,让系统重新自动分配内存
三、注意事项
缓存机制
Linux 的缓存机制非常先进,通常不需要手动释放内存。缓存包括 dentry(用于加速文件路径名到 inode 的转换)、Buffer Cache(针对磁盘块的读写)和 Page Cache(针对文件 inode 的读写)
性能影响
频繁手动释放内存可能会影响系统性能,建议在内存不足、应用获取不到可用内存或发生 OOM 错误时,首先分析应用方面的原因
linux 手动释放内存的更多相关文章
- Linux手动释放内存
手动释放内存 1.sync将内存中的缓存写入磁盘 2. to free pagecache, use echo 1 > /proc/sys/vm/drop_caches; to f ...
- Linux手动释放缓存的方法
Linux释放内存的命令:syncecho 1 > /proc/sys/vm/drop_caches drop_caches的值可以是0-3之间的数字,代表不同的含义:0:不释放(系统默认值)1 ...
- linux 手工释放内存 高内存 内存回收 方法思路
linux 跑的apache,apache工作模式有 Prefork.Worker和 Event 三种,分别是基于进程.线程.综合模式. 本文中使用的apache是 Event ...
- JNI手动释放内存(避免内存泄露)
. 哪些需要手动释放? 不要手动释放(基本类型): jint , jlong , jchar 需要手动释放(引用类型,数组家族): jstring,jobject ,jobjectArray,jint ...
- Ubuntu系统下手动释放内存
有时候,像mongo这种,对内存只吃不吐的,我们要手动释放一下. drop_caches的详细文档如下:Writing to this will cause the kernel to drop cl ...
- linux手工释放内存
先使用sync命令以确保文件系统的完整性,sync 命令运行 sync 子例程,将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node.已延迟的块 I/O 和读写映射文件. 再执行下面任意一条命 ...
- Linux之 手动释放内存
我们在进程中要怎样去描述一个文件呢?我们用目录项(dentry)和索引节点(inode).它们的定义如下: 所谓"文件", 就是按一定的形式存储在介质上的信息,所以一个文件其实包含 ...
- CentOS 6.5 x86_64系统手动释放内存
1.查询当前内存使用情况和释放缓存的参数 redismaster 10:29:24 [~] [root] free -m total used free shared buffers cachedMe ...
- linux 手动释放buff/cache
为了解决buff/cache占用过多的问题执行以下命令即可 syncecho 1 > /proc/sys/vm/drop_cachesecho 2 > /proc/sys/vm/drop_ ...
- linux如何手动释放linux内存
当在Linux下频繁存取文件后,物理内存会很快被用光,当程序结束后,内存不会被正常释放,而是一直作为caching.这个问题,貌似有不少人在问,不过都没有看到有什么很好解决的办法.那么我来谈谈这个问题 ...
随机推荐
- C语言(从入门到入土)
1.C语言整体上需要记住的 总体上必须清楚的: 1)程序结构是三种: 顺序结构 , 循环结构 (三个循环结构), 选择结构 (if 和 switch) 2)读程序都要从main()入口, 然后从最上面 ...
- 根据字符串,获取实体属性上的annotation,如:createTime” 找到对应实体属性中的 TableField(value = "create_time", fill = FieldFill.INSERT)
根据字符串,获取实体属性上的annotation,如:createTime" 找到对应实体属性中的 TableField(value = "create_time", f ...
- 如何在Spark键值对数据中,对指定的Key进行输出/筛选/模式匹配
在用键值对RDD进行操作时,经常会遇到不知道如何筛选出想要数据的情况,这里提供了一些解决方法 目录 1.对固定的Key数据进行查询 2.对不固定的Key数据进行模糊查询 1.对固定的Key数据进行查询 ...
- OpenAI使用AI编程给出了数数问题的解决方案 —— 如何解决ChatGPT不会数数的问题
总所周知的一个问题,那就是ChatGPT不会数数,不过今天突然发现OpenAI给出了一个神奇的解决方法,那就是AI编程. 问题案例如下: The text provided will be analy ...
- 3.16 Linux删除文件或目录(rm命令)
当 Linux 系统使用很长时间之后,可能会有一些已经没用的文件(即垃圾),这些文件不但会消耗宝贵的硬盘资源,还是降低系统的运行效率,因此需要及时地清理. rm 是强大的删除命令,它可以永久性地删除文 ...
- 3.7 Linux切换目录(cd命令)
cd 命令,是 Change Directory 的缩写,用来切换工作目录. Linux 命令按照来源方式,可分为两种,分别是 Shell 内置命令和外部命令.所谓 Shell 内置命令,就是 She ...
- 不同团队如何实现登录系统 (just for fun)
某一天 ceo 需要一个登录系统,找了开发团队 控制狂团队 领导点了卡布奇诺,打开了自己轻薄的 mac book, 点开 word 文档, 开始编写: 1. 项目背景 2. 名词解析 3. 数据表设计 ...
- The 2024 ICPC Asia East Continent Online Contest (I) G
Link: The Median of the Median of the Median 考虑二分答案,对中位数进行二分,每次去判断是否比中位数大即可. 我们钦定了一个中位数 \(x\),对于 \(\ ...
- 切换自己为www-data用户
突发奇想的想把切换为www-data用户去看看会怎么样.然后做了一个尝试 由于我安装了lamp环境,所以有www-data用户,用它可以来执行web php ,以及安全放心的跑cli(避免权限过高执行 ...
- 七、FreeRTOS学习笔记-中断管理
FreeRTOS学习笔记-中断管理 中断:让CPU打断正常运行的程序,转而去处理紧急的事件(程序) 中断执行机制,可简单概括为三步: 1.中断请求:外设产生中断请求(GPIO外部中断.定时器中断等) ...