Linux下查看内存泄露的命令
一. Linux下确定内存泄露
在做嵌入式开发中,例如,在 Linux 下做 C/C++ 开发,会因为调用 malloc/calloc() 函数,忘记释放堆内存。程序运行久了,会发生内存泄露问题。
在 Linux 环境的 C/C++ 开发中,但是,当每次只是发生几个字节的内存泄露时,可以写一段测试内存泄露的代码来确认。而当代码中发生可见的大量的内存泄露问题时,可以使用 shell 命令来确认。
这里介绍 发生大量的内存泄露时,使用 shell 命令确认是否存在内存泄露的方法。常用的命令包括如下 shell 命令:
ps 命令
top 命令
free 命令
cat /proc/meminfo 或 cat /proc/$pid/status 命令
1. ps 命令
ps 命令用来列出系统中当前正在运行的那些进程,列出的是当前那些进程的快照,就是执行 ps 命令的那个时刻的那些进程。确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等。
ps 命令为我们提供了进程的一次性的查看,它所提供的查看结果并不动态连续的;如果想对进程实时监控,应该用 top 命令。
常用的命令如:
ps -ef | grep 进程关键字 //查看指定进程的信息
ps -aux // 列出当前内存中的所有进程
ps aux --sort=%mem(或者 ps aux --sort %mem) //按照内存占用率的升序排序
ps aux --sort=-%mem (或者 ps aux --sort -%mem) //按照内存占用率降序排序
ps aux | grep -e test //打印含义test关键字的进程
ps -aux | grep -E "test|PID" //打印 包含test关键字的进程信息
其中,ps -aux 是以 BSD 方式显示。ps -ef 是以 System V 方式显示,该种方式比 BSD 方式显示的多。
如下所示,使用 ps -aux | grep -E "gome|PID" 命令,可以显示包含 gome 关键字的进程信息,其中包括 CPU 占用,内存占用等。
2. top 命令
top 命令是 Linux 下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows 的任务管理器。通常用来观察 CPU 或 内存的占用情况。
top 命令使用如下:
top -d -3 //3s 显示一次
top -p 1921 //显示进程号为 1921 的进程的信息
如下操作,输入 top -d 3 -p 1921 命令,表示 3 s 显示一次进程号为 1921的进程的信息。
3. free 命令
free 命令可以显示当前系统内存使用情况,主要用于确定设备是否存在内存泄漏。free 命令中的信息都来自于 /proc/meminfo 文件。
默认情况下,即在没有选项的情况下,free 命令显示内存的使用信息。默认按照 k(b) 的计数单位统计。
free 命令使用如下:
free -s 3:表示每隔 3 秒打印一次内存信息
如下操作,输入 free -s 3 -h 命令,表示 3 s 显示一次内存使用情况:
我们可以通过在设备启动和运行一段时间后,使用 free 命令查看 已使用内存(used) 的大小并进行对比,如果运行一段时间后 used内存 有很明显的增大,那很有可能是存在内存泄漏。
4. cat /proc/meminfo 或 cat /proc/$pid/status 命令
cat /proc/meminfo 命令用来查看 Linux 系统的内存使用情况。
cat /proc/$pid/status 命令,用来查看某个进程的内存使用信息。
查看 RAM 使用情况最简单的方法是通过 /proc/meminfo。这个动态更新的虚拟文件实际上是许多其他内存相关工具 (如 free / ps / top 命令) 等的组合显示。
注意:这个文件显示的单位是 kB 而不是 KB,1kB = 1000B,但是实际上应该是KB,1KB=1024B。这个显示是不精确的,是一个已知的没有被更正的历史遗留问题。因为很多程序依赖这个文件查看内存使用的是kB字符
如下所示:
如上所示,其中解释一下重要字段。如下:
MemTotal: 应用可以使用的内存总数
MemFree: 当前空闲的内存数目
MemAvailable: 可用内存(MemFree + 可回收的内存),系统中有些内存虽然已被使用,但是可以回收,如cache、buffer、slab都有一部分可以回收。
Buffers: 用来给文件做缓存大小
其他的参数暂不做解释。
Linux下查看内存泄露的命令相关推荐
- linux下查看内存使用情况
在Linux下查看内存我们一般用free命令: [root@scs-2 tmp]# free total used free shared ...
- linux内存平均值,linux下查看内存使用情况[转载]
在Linux下查看内存我们一般用free命令: [root@scs-2 tmp]# free total used free shared buffers cached Mem: 3266180 32 ...
- Linux下查看内存型号、主板、硬盘等等
@Linux下查看内存型号.主板.硬盘等等 首先查看是否安装了dmidecode工具 [root@algerfan ~]# dmidecode Linux 查看内存的插槽数,已经使用多少插槽.每条内存 ...
- linux脚本查看系统内存,二个linux下查看内存使用情况的shell脚本()
摘要 腾兴网为您分享:二个linux下查看内存使用情况的shell脚本(),政务易,悦作业,优化大师,王者荣耀等软件知识,以及单向历app,优路教育app,kimoji,开关电源设计软件,皮皮高清影视 ...
- Linux下查看内存使用情况方法总结
关注.星标公众号,直达精彩内容 来自:Specs'Blog 链接:http://9iphp.com/linux/1247.html 原文:http://ask.xmodulo.com/check-me ...
- linux查看主板最大内存容量,Linux下查看内存插槽数、最大...-linux下手动清理内存或缓存的...-查看linux主板内存槽与内存信息的方法详解_169IT.COM...
一.先来看几个用dmidecode查看内存信息的例子. 1.查看内存槽数.那个槽位插了内存,大小是多少 代码示例: dmidecode|grep -P -A5 "Memory\s+Devic ...
- linux下查看内存频率,内核函数,cpu频率
查看CPU: cat /proc/cpuinfo # 总核数 = 物理CPU个数 X 每颗物理CPU的核数 # 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数# 查看物理C ...
- 轻松学会linux下查看内存频率,内核函数,cpu频率
查看CPU: cat /proc/cpuinfo # 总核数 = 物理CPU个数 X 每颗物理CPU的核数 # 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数# 查看物理C ...
- linux下查看文件内容的命令
众所周知Linux中命令cat.more.less均可用来查看文件内容,主要区别有: cat是一次性显示整个文件的内容,还可以将多个文件连接起来显示,它常与重定向符号配合使用,适用于文件内容少的情况: ...
最新文章
- ajax的核心有哪些,ajax的核心
- 前端学习(1986)vue之电商管理系统电商系统之建立新分支
- 《程序设计与数据结构》实验2报告
- GSM/GPRS/EDGE简介
- 数学建模比赛论文模板格式
- 非中文正则表达式 php,php判断是不是为中文正则表达式大全(转)
- 五个免费数据采集工具网站
- IonIcons图标大全
- 如何将Kali Linux中的Firefox ESR浏览器语言设置为中文
- 倪静(201550919)第一次作业
- 打印系统开发(9)——办公打印机使用教程
- Excel 快速跳到表格最后一行/第一行
- 突破Flutter私有化仓库100M限制-Hosted packages must be smaller than 100 MB
- wincc报表日报表实例_wincc 报表,涉及变量计算的日报表怎么做
- Cipher Code
- 一台计算机两人共享使用,双人共享一台电脑主机 两个人同时使用一台电脑主机...
- 下载钉钉直播回放视频
- linux 查看大文件,Linux 查看大文件内容的方法
- ubuntu 18.04.02 + GTX1660 + CUDA_10.0 + CUDNN_7.6.4 安装脱坑记
- 图像归一化 normalization