`

手动释放linux内存

阅读更多
在Linux系统下,我们一般不需要去释放内存,因为系统已经将内存管理的很好。但是凡事也有例外,有的时候内存会被缓存占用掉,导致系统使用SWAP空间影响性能,此时就需要执行释放内存(清理缓存)的操作了。

Linux系统的缓存机制是相当先进的,他会针对dentry(用于VFS,加速文件路径名到inode的转换)、Buffer Cache(针对磁盘块的读写)和Page Cache(针对文件inode的读写)进行缓存操作。但是在进行了大量文件操作之后,缓存会把内存资源基本用光。但实际上我们文件操作已经完成,这部分缓存已经用不到了。这个时候,我们难道只能眼睁睁的看着缓存把内存空间占据掉么?

所以,我们还是有必要来手动进行Linux下释放内存的操作,其实也就是释放缓存的操作了。

要达到释放缓存的目的,我们首先需要了解下关键的配置文件/proc/sys/vm/drop_caches。这个文件中记录了缓存释放的参数,默认值为0,也就是不释放缓存。他的值可以为0~3之间的任意数字,代表着不同的含义:

0 – 不释放
1 – 释放页缓存
2 – 释放dentries和inodes
3 – 释放所有缓存

知道了参数后,我们就可以根据我们的需要,使用下面的指令来进行操作。

首先我们需要使用sync指令,将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件。否则在释放缓存的过程中,可能会丢失未保存的文件。

#sync

接下来,我们需要将需要的参数写进/proc/sys/vm/drop_caches文件中,比如我们需要释放所有缓存,就输入下面的命令:

#echo 3 > /proc/sys/vm/drop_caches

此指令输入后会立即生效,可以查询现在的可用内存明显的变多了。

要查询当前缓存释放的参数,可以输入下面的指令:

#cat /proc/sys/vm/drop_caches
分享到:
评论

相关推荐

    手工释放linux内存_procsysvmdrop_caches.pdf

    手动释放 Linux 内存 - procsysvmdrop_caches Linux 内存管理是 Linux 操作系统中一个非常重要的部分。在日常使用中,我们经常会遇到物理内存被用光的现象,特别是在频繁存取文件时。这个问题貌似有不少人在问,...

    Linux下手动释放内存

    通过命令手动释放内存,然后可以查看内存使用情况

    手动释放Linux服务器内存(具体操作步骤)

    本文将详细解释手动释放Linux服务器内存的具体操作步骤,并分析其背后的工作原理。 首先,当Linux服务器发现内存不足时,它会自动清理cached区域,这是因为cached区域包含了文件系统缓存和页面缓存,这些缓存用于...

    详解Linux手动释放缓存的方法

    在Linux操作系统中,内存管理是一项复杂且高效的...但同时,也要理解Linux内存管理的机制,避免不必要的操作影响系统的稳定性和效率。通过合理的内存管理和优化,我们可以确保Linux系统在各种工作负载下都能高效运行。

    Linux011-内存管理

    开发者需要手动检查代码以确保所有分配的内存都被正确释放。 9. **物理内存与设备内存**: - Linux0.11还管理一部分专门用于硬件设备的内存,这部分内存通常位于BIOS保留区,不能被普通进程直接访问。 10. **内存...

    linux内存和缓冲区完美教程大全

    Linux内存管理是操作系统的核心部分,对于开发者来说,深入理解这一主题至关重要。本教程全面涵盖了Linux内存管理和缓冲区操作,特别关注内存泄漏检测和缓冲区溢出攻击的防范。 首先,让我们探讨C语言中的内存管理...

    Linux内存泄漏检测方法总结

    首先,了解Linux内存管理的基本概念是必要的。Linux内核将内存分为用户空间和内核空间,用户空间的内存泄漏可以通过特定工具进行检测。例如,`Valgrind` 是一个强大的内存调试、内存泄漏检测和性能分析工具。使用...

    一种Linux下动态内存泄漏检测技术的实现.pdf

    内存泄漏是软件开发中常见的问题,特别是在使用C/C++编写大型程序时,由于手动管理内存,开发者有时会忘记释放已分配的内存,导致内存资源的浪费。随着时间的推移,这些未释放的内存可能会积累,最终影响程序的性能...

    C++垃圾回收器linux版本

    在Java等语言中,垃圾回收是标准特性,但在C++中,程序员通常需要手动管理内存,通过new和delete操作来分配和释放内存。然而,为了减轻程序员的负担,一些开发者创建了C++的垃圾回收器实现,如"Linux版本的C++垃圾...

    Linux下C语言程序内存泄漏的研究.pdf

    【Linux下C语言程序内存泄漏的研究】 内存泄漏是C语言编程中常见的问题,尤其是在Linux操作系统中,由于系统资源管理的特性,对内存管理不当会导致内存泄漏,进而影响程序的稳定性和系统的性能。本文将深入探讨内存...

    Linux 系统中valgrind检查内存泄露

    内存泄露是程序设计中常见的问题,当程序分配了内存但未能正确释放时,就会发生内存泄露,久而久之,系统可用内存会逐渐减少,可能导致系统性能下降甚至崩溃。为了解决这个问题,Linux提供了一个强大的工具——...

    Linux 嵌入式c语言开发内存管理介绍

    相反,堆内存和栈内存是动态分配,其中栈内存由系统自动管理,而堆内存需要程序员手动管理,以防止内存泄漏。 在开发嵌入式系统时,由于资源有限,合理使用内存至关重要。了解这些基本概念有助于编写更高效、可靠的...

    Linux C函数参考 内存及字符串操作篇

    在Linux系统中,C语言是基础且强大的编程工具,它提供了丰富的函数库来处理内存管理和字符串操作。本篇主要探讨的“Linux C函数参考——内存及字符串操作篇”涵盖了两个核心领域:内存管理和字符串处理。以下是对这...

    操作系统课程设计 实现 可变分区最佳适应算法 1输入作业数及大小 2查看内存使用情况 3释放内存 4查看空闲区表的情况

    同时,提供的`linux代码.docx`可能包含了一些在Linux环境下实现此算法的示例,Linux内核本身也使用了类似的内存管理策略。 值得注意的是,虽然最佳适应算法在理论上可以优化内存利用率,但它也可能导致"瘦长"的空闲...

    Linux系统下内存分配原理的研究.pdf

    Linux内存布局分为多个区域: - 只读区域:包含代码(指令)和只读数据,如常量字符串,由系统在程序结束后释放。 - 可读写区域:包括已初始化和未初始化的数据,静态变量存储在此区域,大小可以通过`brk(2)`系统调...

    VC内存泄露检查 VC内存泄露检查 VC内存泄露检查

    - **Valgrind**:虽然主要针对Linux平台,但也可以通过wine在Windows上运行,用于检测内存泄露、内存越界等错误。 - **Microsoft CRT诊断**:VC++的运行时库(C Run-Time Library, CRT)提供了内存泄漏检测功能,...

    内存分配源代码MemoryAllocation.rar

    1. **手动内存管理**:在Java中,通常我们不需要关心内存的释放,因为JVM有一个垃圾回收器(Garbage Collector, GC)会自动处理不再使用的对象。然而,如果程序中存在大量临时对象或者有显式内存管理的需求,可能会...

    Linux+C语言+内存越界问题总结[文].pdf

    3. 全局变量或者动态分配的内存越界:主要现象:全局变量被修改,内存泄漏(如果动态分配的内存越界,有可能导致被越界的内存无法释放或者不能全部释放)。主要原因:全局或者动态分配的内存越界。 引起内存越界的...

    linux查看内存和CPU详解.pdf

    在Linux操作系统中,管理和监控内存及CPU的使用情况对于系统管理员来说至关重要,这有助于优化系统性能、排查问题以及确保服务的稳定运行。本篇将详细解释如何查看Linux系统的内存和CPU使用情况,以及如何理解相关...

Global site tag (gtag.js) - Google Analytics