在服务器运行过程中,使用free -m查看服务器内存时,经常会发现free值很小,有些同学就会很紧张,总想采取一些措施,使得free值看起来高一点,心里就比较爽一点。其实,个人觉得这完全是图一时之快,没什么实质性用途。
一、大众释放内存方法
1. 首先使用free -m查看剩余内存
- linux-8v2i:~
- total used free shared buffers cached
- Mem: 3952 2773 178 0 130 1097
- -/+ buffers/cache: 1545 2406
- Swap: 2055 0 2055
2. 执行sync命令
使用sync命令以确保文件系统的完整性,sync 命令运行 sync 子例程,将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件。
3. 修改/proc/sys/vm/drop_caches
- echo 3 > /proc/sys/vm/drop_caches
说明:
1>. /proc是一个虚拟文件系统,我们可以通过对它的读写操作作为与kernel实体间进行通信的一种手段。也就是说可以通过修改/proc中的文件,来对当前kernel的行为做出调整。也就是说我们可以通过调整/proc/sys/vm/drop_caches来释放内存。
2>. 关于drop_caches的官方说明如下:
Writing to this file causes the kernel to drop clean caches,dentries and inodes from memory, causing that memory to becomefree.
To free pagecache, use echo 1 > /proc/sys/vm/drop_caches;
to free dentries and inodes, use echo 2 > /proc/sys/vm/drop_caches;
to free pagecache, dentries and inodes, use echo 3 >/proc/sys/vm/drop_caches.
Because this is a non-destructive operation and dirty objects are not freeable, the user should run sync first.
3>. Linux内核会将它最近访问过的文件页面缓存在内存中一段时间,这个文件缓存被称为pagecache。
4.再使用free -m查看剩余内存,情况如下:
- linux-8v2i:~
- total used free shared buffers cached
- Mem: 3952 1773 2325 0 0 80
- -/+ buffers/cache: 1545 2406
- Swap: 2055 0 2055
二、Linux内存分析
1. 首先对free -m查看结果进行分析
- linux-8v2i:~
- total used free shared buffers cached
- Mem: 3952 2773 178 0 130 1097
- -/+ buffers/cache: 1545 2406
- Swap: 2055 0 2055
各参数含义:
- total:总物理内存
- used:已使用内存
- free:完全未被使用的内存
- shared:应用程序共享内存
- buffers:缓存,主要用于目录方面,inode值等
- cached:缓存,用于已打开的文件
- -buffers/cache:应用程序使用的内存大小,used减去缓存值
- +buffers/cache:所有可供应用程序使用的内存大小,free加上缓存值
其中:
- total = used + free
- -buffers/cache=used-buffers-cached,这个是应用程序真实使用的内存大小
- +buffers/cache=free+buffers+cached,这个是服务器真实还可利用的内存大小
2. Linux的内存分配方式
大家都知道,Linux服务器为了提高效率,会提前申请内存,即使这些内存没有被具体应用使用,Linux也会提前申请这些内存,然后利用这些内存做缓存用,即将刚打开的文件系统存入cache中,这样对应的服务器free值会越来越少,buffers和cached会越来越大,因此给大家表象就是内存越来越少了,大家就紧张了;其实,大家完全不用紧张,Linux服务器在发现内存不足时,会自动清理cached区域,释放内存,然后继续增大cache,free继续减少。因此,那样手动降低内存使用率的方法,其实就是图一时之快,呵呵。
分享到:
相关推荐
本文将详细解释手动释放Linux服务器内存的具体操作步骤,并分析其背后的工作原理。 首先,当Linux服务器发现内存不足时,它会自动清理cached区域,这是因为cached区域包含了文件系统缓存和页面缓存,这些缓存用于...
### 手工释放Linux内存详解 #### 一、引言 在Linux环境下,内存管理是一项重要的任务,尤其在服务器环境中更是如此。随着程序的运行,Linux操作系统会利用空闲内存作为缓存,以提高文件读取效率。然而,这也可能...
Web服务器可能需要动态地分配和释放内存,以存储请求数据和响应内容。正确地使用`malloc()`、`calloc()`、`realloc()`和`free()`等函数至关重要,防止内存泄漏和悬挂指针。 6. **并发控制**:多线程环境下,数据...
然而,在某些特殊场景下,如进行大规模的测试或临时性的资源优化时,可能需要手动清理内存中的缓存来释放更多的可用内存空间。本文将详细介绍Linux内存清理与释放的相关命令及其使用方法。 #### 重要概念 在深入...
Red Hat Linux操作系统是目前最流行的Linux发行版本之一,附带的DHCP服务也是当前Internet上最受欢迎的动态IP地址分配服务器。Linux操作系统的特点“免费、高效、稳定、跨平台”使其在DHCP服务器架构中得到了广泛的...
4. 隐式内存泄漏:程序运行过程中持续分配内存,但在结束时才统一释放,对于长时间运行的服务程序,这种行为可能导致问题。 在Linux系统中,Valgrind是一个强大的内存错误检测工具,尤其适用于查找内存泄漏。使用...
在标题和描述中提到的问题,即"Linux下buff/cache占用过高",这是一个常见的系统性能优化问题,尤其是对于运行Java应用或者其他资源密集型服务的云服务器而言。这里我们将深入探讨buff/cache的作用、为何会占用过多...
因此,当在Windows环境下创建的脚本文件上传到Linux服务器后,每一行末尾都会有一个多余的`CR`(回车)字符,这会导致脚本解释器无法识别脚本文件。 **解决方案**: 1. **重新编写脚本**:直接在Linux环境下编写...
在对称多处理器(SMP)系统中,内核通常采用按需分配的方式管理内存,当内存不足时,通过内存回收机制释放不再使用的内存页。 #### 5.2 NUMA系统中的内存回收 在NUMA架构下,内存回收机制需要更加智能化,不仅要...
在Linux服务器管理中,自动化管理是一种高效且必要的技术,尤其对于大型企业或数据中心来说,它能够显著提高效率,减少人力成本,并确保系统的稳定运行。本文将探讨如何在Linux环境中实现服务器自动化管理。 系统...
虽然Linux通常能够自动管理内存并维持良好的性能,但在某些特殊场景下,如服务器负载极高时,手动干预可以快速释放资源,提高系统的响应速度。正确理解和使用这些命令对于系统管理员来说是非常重要的技能之一。希望...
Linux DHCP服务器是动态主机配置协议(DHCP)的实现,用于自动分配TCP/IP配置信息给网络中的客户端。DHCP协议简化了网络管理,因为它允许中央服务器集中管理IP地址和其他网络参数,如子网掩码、网关和DNS服务器。本...
- **电源控制按钮**:手动控制服务器的开关。 - **信息指示灯**:指示服务器是否有不良状况。 - **释放滑锁**:用于操作光通路诊断面板。 - **系统错误指示灯**:指示系统是否存在错误。 #### 四、组件安装 **4.1 ...
在Linux中,管理文件系统是非常关键的一部分,而“挂载”(mount)是Linux操作文件系统的核心概念之一。本篇“Linux基础课件手动挂载mount命令共9页.pdf”详细介绍了这一主题,尽管实际内容并未在此展示,但我们可以...
Linux操作系统中的DHCP服务器配置是网络管理中的重要一环,主要负责为网络中的设备自动分配IP地址及相关TCP/IP参数,从而简化网络管理,减少错误和提高效率。本教程旨在教授DHCP服务器的配置、工作原理及其在Linux...
Linux操作系统中的DHCP服务器配置是一项重要的网络管理任务,尤其对于大型网络环境而言,它可以极大地简化IP地址和其他TCP/IP参数的分配工作。以下是关于这个主题的详细讲解: **DHCP的作用及优点** DHCP(Dynamic ...
该工具已经广泛应用于运维和业务人员中,在遇到TCP重传问题时,成为首选工具之一。它能够快速指明正确的方向,帮助很多业务部门解决了问题。 ##### 内存管理代表性问题:内存泄漏 **问题描述:** 内存泄漏是指程序...