IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> linux下使用命令行辅助定位内存泄漏问题 -> 正文阅读

[系统运维]linux下使用命令行辅助定位内存泄漏问题

前言

最近自己正在做的一款产品,因内存泄漏经常出现重启或者是功能不正常的问题。为了解决这个问题,这里记录下目前所掌握到的使用命令行定位内存泄漏的一些措施。

有点我们需要清楚,使用linux的命令行最多是帮我们定位到产生泄漏的进程,而并不能直接帮我们找出内存泄漏的具体原因,所以当定位到具体进程后,还需自己去参考别的博客采取一些手段去进一步定位泄漏原因。

注??:我后面所说的内存一般就是物理内存,如果是虚拟内存我会进行说明。

一、free命令:

free命令主要用于查看设备的内存使用情况,主要用于确定设备是否存在内存泄漏。

命令

free
或者
cat /proc/meminfo

请添加图片描述

内容解释

内容解释
total内存总量
used已使用的内存
free空闲内存
shared共享内存
buff/cachebuffer(可释放):存放要写到disk(块设备)中的数据 / cache(可释放):存放从disk中读取的数据。
available可用内存 available

我们可以通过在设备启动和运行一段时间后,分别使用free命令查看已使用内存used的大小并进行对比,如果运行一段时间后used有很明显的增大那很有可能是存在内存泄漏。

其它

  • 关于buff/cache的具体区别大家可以查看:
    链接: buffer和cache怎么让你们解释的那么难理解?.
  • available到底是什么意思?
    avaliable是新的free命令中增加的,它的大概计算方式是:
    available = free + cache + buff
    但是实际上上述等式并不一定相等,cache/buff虽然都是可回收内存(当内存告急的时候,内核会回收这部分的内容进行使用)但是实际上回收的时候并非所有的cache都能够被回收。
    参考链接:链接: linux free 命令下free/available区别.

二、top命令

top命令是实时动态地查看系统的整体运行情况,一般我查cpu的占用率的时候会用到这个,其它的时候我用的很少。

命令

top

在这里插入图片描述

这个命令返回结果的格式可以自己制定,我这里是展现的我们的设备上返回的结果,该命令的具体使用大家可以参考标题“其它”里面的内容。

我这里提一个点就是vsz,起初我以为看进程的内存使用情况就看vsz就行了,后面发现这样是不正确的。
vsz(virtual memory size):It includes all memory that the process can access, including memory that is swapped out, memory that is allocated, but not used, and memory that is from shared libraries. 它包括进程可以访问的所有内存,包括被换出的内存,已分配但未使用的内存以及来自共享库的内存。

其它

具体内容参考:

三. cat /proc/$pid/status

查看具体进程的状态,包括该进程的内存使用情况。 其中pid是进程号,你可以先通过ps命令查看应用程序的pid(例如是702),然后通过 cat /proc/702/status 来查看该进程的内存使用情况。

命令

cat /proc/702/status
(这里我要查看的是pid = 702的进程)

在这里插入图片描述

内容解释

这里我只说一些和内存相关的吧。

内容解释
VmPeak代表当前进程运行过程中占用内存的峰值.
VmSize代表进程现在正在占用的内存.(虚拟内存)
VmLck代表进程已经锁住的物理内存的大小.锁住的物理内存不能交换到硬盘.
VmHWM是程序得到分配到物理内存的峰值…
VmRSS是程序现在使用的物理内存.
VmData表示进程数据段的大小.
VmStk表示进程堆栈段的大小.
VmExe表示进程代码的大小.
VmExe表示进程代码的大小.
VmLib表示进程所使用LIB库的大小.
VmPTE占用的页表的大小.
VmSwap进程占用Swap的大小…

这里主要看VmRSS,它代表着当前正在使用的物理内存的大小,一般该进程存在内存泄漏的话,在启动时到运行一段时间后,该值会明显急剧增大。

总结

1.通过free命令确定设备是否存在泄漏
2.通过ps命令获取要查找的应用进程的pid
3.通过cat /proc/$pid/status 中的VmRSS查看当前进程的物理内存是否相比较于刚启动时,明显增大。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-01-04 13:49:25  更:2022-01-04 13:51:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 6:53:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码