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

    文章

    11628

    浏览量

    217989
  • 内存
    +关注

    关注

    9

    文章

    3173

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

    WebGL/Canvas 内存泄露分析

    的 JavaScript 对象未释放要复杂得多。一个现代 WebGL/Canvas 应用的内存版图实际上跨越了三个截然不同但又相互关联的内存区域: 图 V8 引擎管理的 JavaScript 堆(JS Heap
    的头像 发表于 10-21 11:40 168次阅读
    WebGL/Canvas <b class='flag-5'>内存</b>泄露分析

    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 548次阅读
    <b class='flag-5'>Linux</b>系统环境监测终极指南

    HarmonyOS优化应用内存占用问题性能优化一

    使用的数据替换为新数据。 生命周期管理:在生命周期管理中,可以释放不再使用的系统资源,包括应用内存、监听事件、网络句柄等。 Purgeable Memory内存管理机制:在该机制中,开发者可以通过
    发表于 05-21 11:27

    SE5 ffmpeg例程内存释放的原因?

    行改造循环拉流。 问题: 测试发现,在循环开始前先从文件读取约29M文件后(大于34M后释放一部分),循环(拉取一段时间后,停止,再拉取)拉取视频流时,会出现内存上升问题。 测试场景:解码6路
    发表于 04-22 11:04

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

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

    信息安全管理必备!Linux系统使用SSH登录root账号的方法

    Linux远程管理信息安全必备!本文介绍各类Linux开发板/主板使用SSH登录root账号的方法,使用触觉智能RK3562开发板演示,关注触觉智能,持续为大家带来更多使用技巧!
    的头像 发表于 02-12 15:46 1116次阅读
    信息安全管理必备!<b class='flag-5'>Linux</b>系统使用SSH登录root账号的<b class='flag-5'>方法</b>

    hyper v 内存,hyper v 内存设置的操作步骤和方法是什么?

    造成资源浪费,影响宿主机及其他虚拟机的性能。因此,掌握Hyper-V内存设置的操作步骤和方法,对于高效使用虚拟机十分关键。下面就为大家详细介绍。    Windows系统下的操作步骤    打开Hyper-V管理器:点击电脑桌面左下角的“开始”按钮,在
    的头像 发表于 01-24 15:22 1104次阅读
    hyper v <b class='flag-5'>内存</b>,hyper v <b class='flag-5'>内存</b>设置的操作步骤和<b class='flag-5'>方法</b>是什么?

    指针被释放后就变成了空指针吗

    ;}     这段代码大家看下有没有问题,能不能顺利运行? 前面三行都没有问题,指针 s 指向了一块堆内存,把字符串 helloworld 拷贝到堆内存中,然后释放了 s。 问题就出在这,很多同学不理解,指针 s 被
    的头像 发表于 01-22 09:23 646次阅读

    Linux服务器卡顿救星之一招释放Cache内存

    在程序运行结束后不会自动释放。这可能会导致程序频繁读写文件后可用物理内存变得很少,必要时(比如内存确实不够用),需要主动释放缓存内存。 注意
    的头像 发表于 01-16 10:04 2162次阅读