第一步:先执行sync命令
#sync
sync命令用于强制被改变的内容立刻写入磁盘,更新超块信息,以防止释放,sync命令则可用来强制将内存缓冲区中的数据立即写入磁盘中.
第二步:清理linux内存缓存
一般系统是不会自动释放内存的
0 – 不释放
①. – 释放页缓存
此指令输入立即生效,意在释放所有缓存.
第三步:关闭swap,再开启swap
(如果只是清理swap,第二部可以不用进行操作,因为操作了第二步关闭swap时会使用更长的时间)
#swapoff -a? 这一步因为是后台 在一点一点的释放,如果配置的swap超大,这里就等待得超久一些
#swapon -a? 再开启
linux什么时候开始使用虚拟内存(swap)
swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,
swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面.
通常情况下:
B.修改swappiness参数
临时性修改:
vm.swappiness = 10
①.0
永久性修改:
加入参数:
然后在直接:
查看是否生效:
cat /proc/sys/vm/swappiness
后来通过了解到,linux系统和平时使用的windwos系统内存运行机制不同.
windows系统的内存是程序运行过程中需要使用才会用到,不用时空闲着.所以当内存使用率过高时,需要检查是否超负载运行.解决方法是停止掉一些进程.
linux系统中,是进程优先使用内存,而不是磁盘.这样会加快读取速度.当有新的进程启动时,再从内存中开辟出一定空间,为新的进程所用.即使进程退出,也不会立刻从内存中清理掉,这样可以加快下次启动进程的速度.所以内存一直是使用率很高的.这是linux系统的独特之处,初使用linux系统的同学需要转换一些思维.不用为linux的内存使用率高而担心.
再介绍一个linux查看内存的命令, free
free命令可以显示当前系统为使用和以使用的内存情况,还可以显示被内存使用的内存缓冲区.
free命令默认以K单位来显示内存使用情况
Mem行显示数据
total:总内存大小
used:已使用内存大小
free:当前空闲内存大小
shared:多个进程共享的内存总额
buffers/cached:缓存内存数据
-/+ buffers/cache行数据显示
这一行的数据代表应用内存使用情况,可理解为真实内存使用情况.如图1中第三行数据.
used:当前(真实)使用内存总数
free:当前(真实)空闲内存总数
Swap代表交换分区,不做过多详解
free常用参数:
free -b? ? ?#以Byte为单位显示内存使用情况
free -k? ? ? #以KB为单位显示内存使用情况,也是默认参数
free -m? ? ? #以MB为单位显示内存使用情况
free -g? ? ? #以GB为单位显示内存使用情况
free -o? ? ? #不显示应用(真实)内存使用情况列,不推荐
free -s数字 #间隔数字秒数刷新显示内存使用情况
free -t? ? ? #显示内存总和列
free -V? ? ?#显示当前版本
内存是Linux内核所管理的最重要的资源之一.内存管理系统是操作系统中最为重要的部分,因为系统的物理内存总是少于系统所需要的内存数量.虚拟内存就是为了克服这个矛盾而采用的策略.系统的虚拟内存通过在各个进程之间共享内存而使系统看起来有多于实际内存的内存容量.Linux支持虚拟内存, 就是使用磁盘作为RAM的扩展,使可用内存相应地有效扩大.核心把当前不用的内存块存到硬盘,腾出内存给其他目的.当原来的内容又要使用时,再读回内存.以下就是我为大家整理到的详细LINUX系统内存管理的知识,欢迎大家阅读!!!
LINUX系统教程:内存管理的知识详解
第一段:内存使用情况监测
(1)实时监控内存使用情况
在命令行使用"Free"命令可以监控内存使用情况
代码如下:
#free
total used free shared buffers cached
watch命令会每两秒执行 free一次,执行前会清除屏幕,在同样位置显示数据.因为 watch命令不会卷动屏幕,所以适合出长时间的监测内存使用率.可以使用 -n选项,控制执行的频率;也可以利用 -d选项,让命令将每次不同的地方显示出来.Watch命令会一直执行,直到您按下 [Ctrl]-[C] 为止.
第二段:虚拟内存的概念
(1)Linux虚拟内存实现机制
Linux虚拟内存的实现需要六种机制的支持:地址映射机制、内存分配回收机制、缓存和刷新机制、请求页机制、交换机制、内存共享机制.
首先内存管理程序通过映射机制把用户程序的逻辑地址映射到物理地址,在用户程序运行时如果发现程序中要用的虚地址没有对应的物理内存时,就发出了请求页要求;如果有空闲的内存可供分配,就请求分配内存(于是用到了内存的分配和回收),并把正在使用的物理页记录在缓存中(使用了缓存机制). 如果没有足够的内存可供分配,那么就调用交换机制,腾出一部分内存.另外在地址映射中要通过TLB(翻译后援存储器)来寻找物理页;交换机制中也要用到交换缓存,并且把物理页内容交换到交换文件中后也要修改页表来映射文件地址.
第三段:使甩vmstat命令监视虚拟内存使用情况
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
vmstat命令输出分成六个部分:
(1)进程procs:
r:在运行队列中等待的进程数 .
b:在等待io的进程数 .
swpd:现时可用的交换内存(单位KB).
free:空闲的内存(单位KB).
buff: 缓冲去中的内存数(单位:KB).
cache:被用来做为高速缓存的内存数(单位:KB).
si: 从磁盘交换到内存的交换页数量,单位:KB/秒.
so: 从内存交换到磁盘的交换页数量,单位:KB/秒.
bi: 发送到块设备的块数,单位:块/秒.
bo: 从块设备接收到的块数,单位:块/秒.
in: 每秒的中断数,包括时钟中断.
cs: 每秒的环境(上下文)切换次数.
cs:用户进程使用的时间 .以百分比表示.
sy:系统进程使用的时间. 以百分比表示.
id:中央处理器的空闲时间 .以百分比表示.
第四段:Linux 服务器的内存泄露和回收内存的方法
①.、内存泄漏的定义:
一般我们常说的内存泄漏是指堆内存的泄漏.堆内存是指程序从堆中分配的,大小任意的(内存块的大小可以在程序运行期决定),使用完后必须显示释放的内存.应用程序一般使用malloc,realloc,new等函数从堆中分配到一块内存,使用完后,程序必须负责相应的调用free或释放该内存块,否则,这块内存就不能被再次使用,我们就说这块内存泄漏了.
从用户使用程序的角度来看,内存泄漏本身不会产生什么危害,作为一般的用户,根本感觉不到内存泄漏的存在.真正有危害的+是内存泄漏的堆积,这会最终消耗尽系统所有的内存.从这个角度来说,一次性内存泄漏并没有什么危害,因为它不会堆积,而隐式内存泄漏危害性则非常大,因为较之于常发性和偶发性内存泄漏它更难被检测到.存在内存泄漏问题的程序除了会占用更多的内存外,还会使程序的性能急剧下降.对于服务器而言,如果出现这种情况,即使系统不崩溃,也会严重影响使用.
对于内存溢出之类的麻烦可能大家在编写指针比较多的复杂的程序的时候就会遇到.在 Linux 或者 unix 下,C、C++语言是最使用工具.但是我们的 C++ 程序缺乏相应的手段来检测内存信息,而只能使用 top 指令观察进程的动态内存总额.而且程序退出时,我们无法获知任何内存泄漏信息.
使用kill命令
使用Linux命令回收内存,我们可以使用Ps、Kill两个命令检测内存使用情况和进行回收.在使用超级用户权限时使用命令"Ps",它会列出所有正在运行的程序名称,和对应的进程号(PID).Kill命令的工作原理是:向Linux操作系统的内核送出一个系统操作信号和程序的进程号(PID).
应用例子:
为了高效率回收内存可以使用命令ps 参数v:
PID TTY STAT TIME MAJFL TRS DRS RSS %MEM COMMAND
然后如果想回收Ping命令的内存的话,使用命令:
使用工具软件
Memprof是一个非常具有吸引力且非常易于使用的软件,它由Red Hat的Owen Talyor创立.这个工具是用于GNOME前端的Boehm-Demers-Weiser垃圾回收器.这个工具直接就可以执行,并且其工作起来无需对源代码进行任何修改.在程序执行时,这个工具会以图形化的方式显示内存的使用情况.
相关介绍:Linux
严格来讲,Linux这个词本身只表示Linux内核,但人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和数据库的操作系统.
Linux有着许多不同的版本,但它们都使用了Linux内核.Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机.
看缓存的命令
free -m
清理缓存的命令
echo 1 /proc/sys/vm/drop_caches
echo 0 是不释放缓存
echo 1 是释放页缓存 <
①.、使用free命令查看一下当前内存使用情况
free
total?used?free?shared?buffers?cached
#针对free命令后出现的信息解释
#total:总计物理内存的大小
#used:已使用多大
#free:可用有多少
#Shared:多个进程共享的内存总额
#Buffers/cached:磁盘缓存的大小
sync
#该命令将未写的系统缓冲区写到磁盘中
#包含已修改的?i-node、已延迟的块?I/O?和读写映射文件.
以上就是土嘎嘎小编为大家整理的内存清理命令linux相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!