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
    +关注

    关注

    87

    文章

    11219

    浏览量

    208875
  • 内存
    +关注

    关注

    8

    文章

    2996

    浏览量

    73868
收藏 人收藏

    评论

    相关推荐

    Linux内存泄露案例分析和内存管理分享

    作者:京东科技 李遵举 一、问题 近期我们运维同事接到线上LB(负载均衡)服务内存报警,运维同事反馈说LB集群有部分机器的内存使用率超过80%,有的甚至超过90%,而且内存使用率还再不停的增长。接到
    的头像 发表于 10-24 16:14 688次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>内存</b>泄露案例分析和<b class='flag-5'>内存</b>管理分享

    Linux服务器性能查看方法

    Linux服务器性能查看是系统管理员和开发人员在日常工作中经常需要进行的任务,以确保系统稳定运行并优化资源使用。以下将详细介绍多种Linux服务器性能查看的方法,这些方法涵盖了CPU、
    的头像 发表于 09-02 11:15 881次阅读

    buffers内存与cached内存的区别

    free 命令是Linux系统上查看内存使用状况最常用的工具,然而很少有人能说清楚 “buffers” 与 “cached” 之间的区别。
    的头像 发表于 07-29 14:17 444次阅读
    buffers<b class='flag-5'>内存</b>与cached<b class='flag-5'>内存</b>的区别

    ESP32CE MQTT断线重连后内存释放怎么解决?

    idf v5.2.1 开启mqtt 连接手机wifi 然后关闭数据流量和打开数据流量(模拟网络超时)esp_get_free_heap_size 获取到的内存越来越小 ,只有wifi重连才会释放
    发表于 07-19 07:12

    使用espconn_set_opt设置了TCP断开连接后立刻释放内存,好像不生效,怎么解决?

    在使用espconn_set_opt设置了TCP断开连接后立刻释放内存,好像不生效。我用的是以下的设置方法: err=espconn_set_opt(conn,ESPCONN_REUSEADDR
    发表于 07-10 07:21

    linux下查询进程占用的内存方法有哪些?

    linux下查询进程占用的内存方法
    发表于 04-08 06:03

    C语言内存泄漏问题原理

    内存泄漏问题只有在使用堆内存的时候才会出现,栈内存不存在内存泄漏问题,因为栈内存会自动分配和释放
    发表于 03-19 11:38 477次阅读
    C语言<b class='flag-5'>内存</b>泄漏问题原理

    Linux内核内存管理之内核非连续物理内存分配

    的主要优点是避免了外部碎片,而缺点是需要修改内核页表。显然,非连续内存区域的大小必须是4096的倍数。Linux使用非连续物理内存区的场景有几种:(1)为swap区分配数据结构;(2)为模块分配空间
    的头像 发表于 02-23 09:44 863次阅读
    <b class='flag-5'>Linux</b>内核<b class='flag-5'>内存</b>管理之内核非连续物理<b class='flag-5'>内存</b>分配

    Linux内存管理之CPU本地页帧缓存

    在前一节中,我们学习了buddy伙伴关系系统,它适用于申请连续的大块物理内存;而有些时候,经常需要申请和释放单个页帧。
    的头像 发表于 02-20 09:23 441次阅读

    Linux内核内存管理架构解析

    内存管理子系统可能是linux内核中最为复杂的一个子系统,其支持的功能需求众多,如页面映射、页面分配、页面回收、页面交换、冷热页面、紧急页面、页面碎片管理、页面缓存、页面统计等,而且对性能也有很高
    的头像 发表于 01-04 09:24 629次阅读
    <b class='flag-5'>Linux</b>内核<b class='flag-5'>内存</b>管理架构解析

    内存不够用的处理方法

    内存不够用的处理方法 内存不够用是许多计算机用户普遍面临的问题。当我们的计算机内存不足时,会导致系统运行缓慢,应用程序无法正常运行,甚至直接导致计算机崩溃。然而,幸运的是,我们有很多
    的头像 发表于 12-28 11:15 989次阅读

    获取Linux内核源码的方法

    (ELF1/ELF1S开发板及显示屏)Linux内核是操作系统中最核心的部分,它负责管理计算机硬件资源,并提供对应用程序和其他系统组件的访问接口,控制着计算机的内存、处理器、设备驱动程序和文件系统等
    的头像 发表于 12-13 09:49 615次阅读
    获取<b class='flag-5'>Linux</b>内核源码的<b class='flag-5'>方法</b>

    内存泄漏有什么影响

    用malloc申请的内存,没有释放,为什么程序也不会出错?
    的头像 发表于 12-07 09:42 584次阅读
    <b class='flag-5'>内存</b>泄漏有什么影响

    如何在Ubuntu Linux释放/boot分区中的空间

    在Ubuntu Linux上,/boot分区是用于存储启动相关的文件的。随着时间的推移,这个分区可能会变满,导致系统无法安装新的内核和更新。本文将介绍如何释放/boot分区中的空间,并提供详细的步骤。
    的头像 发表于 11-28 10:04 844次阅读

    java内存溢出排查方法

    模型。Java内存模型分为线程栈、堆、方法区(Java 8之前称为永久代,Java 8后称为元空间)和本地方法
    的头像 发表于 11-23 14:46 3101次阅读