- 前言
- 一、free命令:
- 命令
- 内容解释
- 其它
- 二、top命令
- 命令
- 其它
- 三. cat /proc/$pid/status
- 命令
- 内容解释
- 总结
最近自己正在做的一款产品,因内存泄漏经常出现重启或者是功能不正常的问题。为了解决这个问题,这里记录下目前所掌握到的使用命令行定位内存泄漏的一些措施。
有点我们需要清楚,使用linux的命令行最多是帮我们定位到产生泄漏的进程,而并不能直接帮我们找出内存泄漏的具体原因,所以当定位到具体进程后,还需自己去参考别的博客采取一些手段去进一步定位泄漏原因。
注⚠️:我后面所说的内存一般就是物理内存,如果是虚拟内存我会进行说明。
一、free命令:free命令主要用于查看设备的内存使用情况,主要用于确定设备是否存在内存泄漏。
命令free 或者 cat /proc/meminfo内容解释
我们可以通过在设备启动和运行一段时间后,分别使用free命令查看已使用内存used的大小并进行对比,如果运行一段时间后used有很明显的增大那很有可能是存在内存泄漏。
其它- 关于buff/cache的具体区别大家可以查看:
链接: buffer和cache怎么让你们解释的那么难理解?. - available到底是什么意思?
avaliable是新的free命令中增加的,它的大概计算方式是:
available = free + cache + buff
但是实际上上述等式并不一定相等,cache/buff虽然都是可回收内存(当内存告急的时候,内核会回收这部分的内容进行使用)但是实际上回收的时候并非所有的cache都能够被回收。
参考链接:链接: linux free 命令下free/available区别.
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. 它包括进程可以访问的所有内存,包括被换出的内存,已分配但未使用的内存以及来自共享库的内存。
具体内容参考:
-
每天一个命令:top工具命令
-
什么是Linux内存管理中的RSS和VSZ
查看具体进程的状态,包括该进程的内存使用情况。 其中pid是进程号,你可以先通过ps命令查看应用程序的pid(例如是702),然后通过 cat /proc/702/status 来查看该进程的内存使用情况。
命令cat /proc/702/status (这里我要查看的是pid = 702的进程)内容解释
这里我只说一些和内存相关的吧。
这里主要看VmRSS,它代表着当前正在使用的物理内存的大小,一般该进程存在内存泄漏的话,在启动时到运行一段时间后,该值会明显急剧增大。
总结1.通过free命令确定设备是否存在泄漏
2.通过ps命令获取要查找的应用进程的pid
3.通过cat /proc/$pid/status 中的VmRSS查看当前进程的物理内存是否相比较于刚启动时,明显增大。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)