【Linux检测内存、管理内存】--【free、ps、kill命令】
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Linux内存检测方法—ps命令
使用Linux命令回收内存,我们能够使用Ps、 Kill两个命令检测内存使用情况和进行回收。在 使用终极用户权限时使用命令“Ps”,他会列出 任何正在运行的程式名称,和对应的进程号 (PID)。
示例
为了高效率回收内存能够使用命令ps 参数v:
Linux内存回收方法—kill命令
Kill命令的工作原理是:向Linux操作系统 的内核送出一个系统操作信号和程式的进 程号(PID)。 示例
Free命令
第二行描述应用程序的内存使用: 前个值表示-buffers/cache——应用程序使 用的内存大小,used减去缓存值 后个值表示+buffers/cache——所有可供应 用程序使用的内存大小,free加上缓存值 注: -buffers/cache=used-buffers-cached +buffers/cache=free+buffers+cached 第三行表示swap的使用: used——已使用 free——未使用
3、Linux 内存监控内存泄露的检 测和回收
对于内存溢出之类的麻烦可能大家在 编写指针比较多的复杂的程式的时候就会 碰到。在 Linux 或 unix 下,C、C++语 言是最使用工具。但是我们的 C++ 程式 缺乏相应的手段来检测内存信息,而只能 使用 top 指令观察进程的动态内存总额。 而且程式退出时,我们无法获知任何内存 泄漏信息。
从用户使用程式的角度来看,内存泄漏本 身不会产生什么危害,作为一般的用户, 根本感觉不到内存泄漏的存在。真正有危 害的是内存泄漏的堆积,这会最终消耗尽 系统任何的内存。以下就介绍下Linux 内 存监控内存泄露和回收内存的方法。
1、Linux 内存监控内存泄漏的定 义
一般我们常说的内存泄漏是指堆内存 的泄漏。堆内存是指程式从堆中分配的, 大小任意的(内存块的大小能够在程式运 行期决定),使用完后必须显示释放的内 存。应用程式一般使用malloc,realloc, new等函数从堆中分配到一块内存,使用 完后,程式必须负责相应的调用free或 delete释放该 内存块,否则,这块内存就 不能被再次使用,我们就说这块内存泄漏 了。
示例—释放Linux Cached内存的 Bash脚本
#! /bin/bash #Free的Memory小于400M时 释放Cached的内存 freemem=$(cat /proc/meminfo | grep "MemFree" | awk '{print $2}') if [ $freemem -le 409600 ];then date >> /var/log/mem.log free -m >> /var/log/mem.log sync sync echo 3 > /proc/sys/vm/drop_caches free -m >> /var/log/mem.log fi
释放cache
Cache机制的存在,使得Linux对磁盘的读写速度 是有较大的好处的。在 Linux OS中,当应用程序 需要读取文件中的数据时,操作系统先分配一些 内存,将数据从存储设备读入到这些内存中,然 后再将数据分发给应用程序;当需要往文件中写 数据时,操作系统先分配内存接收用户数据,然 后再将数据从内存写到磁盘上。
Free命令
是查看Linux服务器内存命令
其中第一行用全局角度描述系统使用的内存状况: total——总物理内存 used——已使用内存,一般情况这个值会比较大,因为这个值包括了 cache+应用程序使用的内存 free——完全未被使用的内存 shared——应用程序共享内存 buffers——缓存,主要用于目录方面,inode值等(ls大目录可看到这个值 增加) cached——缓存,用于已打开的文件 注: total=used+free used=应用程序使用内存+buffers+cached (maybe add shared also)
如果想要释放cache( LINUX的内存管理机制,一般 情况下不需要特意去释放已经使用的cache): To free pagecache: echo 1 > /proc/sys/vm/drop_caches To free dentries and inodes: echo 2 > /proc/sys/vm/drop_caches To free pagecache, dentries and inodes: echo 3 > /proc/sys/vm/drop_caches 说明,释放前最好sync一下,防止丢数据。
2、Linux 内存监控内存泄露的危 漏 本身不会产生什么危害,作为一般的用户, 根本感觉不到内存泄漏的存在。真正有危害 的是内存泄漏的堆积,这会最终消 耗尽系统 任何的内存。从这个角度来说,一次性内存 泄漏并没有什么危害,因为他不会堆积,而 隐式内存泄漏危害性则很大,因为较之于常 发性和偶发性内存泄漏他 更难被检测到。存 在内存泄漏问题的程式除了会占用更多的内 存外,还会使程式的性能急剧下降。对于服 务器而言,假如出现这种情况,即使系统不 崩溃,也会严重 影响使用。