0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux释放内存的方法

h1654155282.3538 来源:运维小笔记 作者:运维小笔记 2021-02-21 10:34 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

一般系统是不会自动释放内存的 关键的配置文件/proc/sys/vm/drop_caches。这个文件中记录了缓存释放的参数,默认值为0,也就是不释放缓存。它的值可以为0~3之间的任意数字,代表着不同的含义:

0:0是系统默认值,默认情况下表示不释放内存,由操作系统自动管理

1:释放页缓存

2:释放dentries和inodes

3:释放所有缓存

实操:

所以根据上面的说明,分别将1,2,3这3个数字重定向到drop_caches中可以实现内存的释放,一般释放内存都是重定向3到文件中,释放所有的缓存

那么下面举个例子,比如这里只释放页缓存,首先使用 free -h 查看当前内存剩余

当前内存剩余570M左右,另外buff/cache是1.3G,根据上面说的现在真正的剩余内存应该是1.8G左右,首先写缓存到文件系统:

sync

然后执行下面命令释放内存(页缓存buff/cache):

echo 1 》 /proc/sys/vm/drop_caches

执行完之后,再次查看内存剩余:

会发现内存被释放了,可用内存确实变为1.8G左右

到这里内存就释放完了,现在drop_caches中的值为1,如果现在想让操作系统重新分配内存,那么设置drop_caches的值为0即可:

echo 0 》 /proc/sys/vm/drop_caches

另外需要注意的是,在生产环境中的服务器我们不要频繁的去释放内存,只在必要时候清理内存即可,更重要的是我们应该从应用程序层面去优化内存的利用和释放,经常清理内存可能只是暂时屏蔽的应用程序中的一些bug,所以更重要的是程序的调优,其他的交给操作系统来管理
责任编辑人:CC

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    88

    文章

    11854

    浏览量

    219833
  • 内存
    +关注

    关注

    9

    文章

    3255

    浏览量

    76595
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    德明利推出CKD DDR5内存条 为AI PC提供稳定高频内存解决方案

    德明利推出CKD DDR5内存条,为AI PC提供稳定高频内存解决方案 (高频带宽释放性能潜力)
    的头像 发表于 04-03 11:23 2262次阅读
    德明利推出CKD DDR5<b class='flag-5'>内存</b>条 为AI PC提供稳定高频<b class='flag-5'>内存</b>解决方案

    Linux内核三大核心模块深度解析:调度、内存与I/O

    Linux内核作为操作系统的核心,其进程调度、内存管理和文件I/O三大模块共同决定了系统的性能与稳定性。无论是多核服务器的高并发处理,还是嵌入式设备的资源受限场景,深入理解这些底层机制都是进行性能调
    的头像 发表于 03-12 09:00 328次阅读
    <b class='flag-5'>Linux</b>内核三大核心模块深度解析:调度、<b class='flag-5'>内存</b>与I/O

    Linux内核伙伴系统内存申请函数详解:从原理到实战

    Linux 内核中,内存管理是整个系统稳定运行的基石,而伙伴系统(Buddy System) 作为内核物理内存分配的核心机制,更是驱动开发、内核模块开发的必备知识点。它通过 "2 的幂
    的头像 发表于 02-10 16:58 3771次阅读
    <b class='flag-5'>Linux</b>内核伙伴系统<b class='flag-5'>内存</b>申请函数详解:从原理到实战

    Linux下扩充Swap交换空间:解决内存不足的实用指南,这些影响要注意!

    大家在使用 Linux 系统(比如常用的 Ubuntu)时,是不是偶尔会遇到 “内存不足” 的弹窗?比如运行大型编译任务、多开虚拟机、做数据分析,或者把 Linux 当服务器用的时候,物理内存
    的头像 发表于 02-09 16:33 671次阅读
    <b class='flag-5'>Linux</b>下扩充Swap交换空间:解决<b class='flag-5'>内存</b>不足的实用指南,这些影响要注意!

    Linux如何防止内存冲突?

    在聊这个话题之前,我们先回忆一下单片机系统中是如何分配内存的?如果没有bootloader,那硬件环境起来之后就直接进入主程序运行,如果有引导程序bootloader,那就需要设置好跳转地址,否则设置不对,系统就无法启动了。
    的头像 发表于 01-30 16:51 1469次阅读
    <b class='flag-5'>Linux</b>如何防止<b class='flag-5'>内存</b>冲突?

    keil中c语言的动态分配内存

    开辟,所以只用进行一次内存释放;而第二种方法进行了两次动态内存开辟,并且其中一次是对结构体内部成员进行的,如果我们的代码是在一个给别人用的函数中,你在里面做了二次
    发表于 01-21 06:04

    【「Linux 设备驱动开发(第 2 版)」阅读体验】+读深入理解Linux内核内存分配

    最近这段时间内存条、硬盘的价格飞涨,随着AI产品的兴起,大数据模型的应用,对硬件存储要求的更高。这节阅读有关Linux内存管理方面的知识。 Linux系统使用了“虚拟
    发表于 01-16 20:05

    rk基于linux/android内存管理

    一、内存分布   U-Boot 由前级 Loader 加载到 CONFIG_SYS_TEXT_BASE 地址,初始化时会探明当前系统的总内存容 量, 32 位平台上认为最大 4GB 可用(但是不影响
    的头像 发表于 12-15 10:42 343次阅读
    rk基于<b class='flag-5'>linux</b>/android<b class='flag-5'>内存</b>管理

    Linux Swap交换空间详解:Android编译内存不足?这样扩充立竿见影

        在  Linux  系统使用过程中,你是否遇到过  “ 内存不足 ”  的报错?比如编译  Android  源码时,明明按教程操作,却因物理内存没达到  16G  要求而编译中断?这正是
    的头像 发表于 12-06 08:10 4702次阅读

    RTThread线程退出后rt_malloc动态创建的资源没有释放怎么解决?

    测试过程中,在一个线程中用rt_malloc动态创建4KB的资源,在线程运行过程中用rt_thread_delete()使线程退出,用memtrace查看内存分配情况,动态创建的4KB的资源仍然存在
    发表于 10-13 07:06

    使用w5500通信使用wiz包的时候,突然拔掉网线,如何释放网络资源?

    也就越多。也就是在拔掉网线之后调用closesocket并没有释放网络资源。这个时候再次接入网线,就无法继续通信了。需要重启w5500。但是重启w5500也无法解决内存泄漏的问题。 有没有人知道如何解决这个问题? 这个是我调用wiz_reset之后测试的效果
    发表于 10-11 09:01

    在使用rt_free释放内存时触发了断言,怎么解决?

    的, 就是代码从循环改成回调, 释放就断言了 内存使用没有问题, 里面的内容都好好的, 只有释放错误 这是断言内容, 这是什么意思
    发表于 09-29 07:02

    接收Ymedom文件后释放内存报错,重启怎么解决?

    测试OTA功能正常了,使用sy发送文件也是正常,使用ry接收数据后提示释放内存出错系统重启了。这里困扰住了,文件已经正常存放在根文件系统下
    发表于 09-28 09:07

    使用lv_label_set_text释放内存没对齐是什么原因导致的?

    (guider_ui.monitor_label_pressure_now, "1"); rt_mutex_release(lv_mutex); // 释放互斥锁 使用lv_label_set_text导致释放
    发表于 09-16 06:44

    Linux系统环境监测终极指南

    Linux系统环境主要监测CPU、内存、磁盘I/O和网络流量。
    的头像 发表于 06-25 14:41 1074次阅读
    <b class='flag-5'>Linux</b>系统环境监测终极指南