Linux free 查询可用内存和判断是否有内存泄漏

2017-12-11  本文已影响276人  平常xin

转载请务必保留超链接 :原文链接

centos7 使用 free -h 查看内存使用情况:

used 表示 操作系统已经分配出去的内存

free 表示 还没分配出去的内存

判断内存是否泄漏的计算方法:

Centos6计算方法:used - buffers - cached 的值 跟 used 的值作比较

Cento7计算方法: available - free 的值 跟 buff/cache 的值作比较

比较两者的差距,如果两者相差很大,说明有很大的可能是内存泄漏.

下面我们通过案例来分析是否存在内存泄漏的可能:

一、Centos6下的案例:

案例1:

buffers + cached =  0.1  + 10  = 10.1G

操作系统系统已经分配出去的内存(used):61G

61-10.1= 51G, 已经分配出去的内存跟实际可用的内存相差51G((1- 10.1 / 61) * 100% = 84%),说明84%的内存没有被使用到,99%的可能存在内存泄漏。

案例2:

Buffers + cached = 0.21  + 0.13 = 0.34G

操作系统系统已经分配出去的内存(used):3.2G

3.2 - 0.34G = 2.86G, 已经分配出去的内存跟实际可用的内存相差2.86G((1 - 0.34 / 3.2) * 100% = 89%),说明89%的内存没有被用到, 99%的可能存在内存泄漏。

二、Centos7下的案例:

案例1:


已分配出去的,并且可再被重用的内存: available - free = 926(总)- 770(free)=156G

buff + cache = 161G

161G跟156G相差不大,  (1 - 156 / 161) * 100% = 3%),说明只有3%的内存没有被用到, 内存泄漏的可能非常低。

案例2:


已分配出去的,并且可再被重用的内存: available - free = 17(总)-0.5(free)=16.5G

Buff + cache = 18G

16.5G跟18G相差不大, (( 1 - 16.5 / 18) * 100% = 8%),说明只有8%的内存没有被用到,内存泄漏的可能非常低。

总结:  对于大内存的服务器,php设置为静态分配内存,也占用大部分内存的情况。判断内存泄露的计算方法在centos6和centos7下是不一样的, free工具可以用来监控内存的使用情况和判断是否有内存泄露。

上一篇下一篇

猜你喜欢

热点阅读