VmRSS不能判定内存泄漏, VmSize才可以

典型的内存泄漏往往会使VmSize和VmRSS同时增长,内存泄漏通过观察VmRSS就能发现(也可能发现不了, 比如只malloc不使用);但并不是说VmRSS增长了就有内存泄漏。

其实对VmSize的监控才是合理的,原因如下:

VmSize是进程所有的内存(文件映射,共享内存,堆,任何其它的内存的总和,它包含VmRSS),它的变化并不是想象的“非常快”,ch___mgr就长期稳定在58824 K上,因为没有不匹配的malloc/free,VmSize不会涨上去

VmRSS是实际用到的物理内存,由于业务的需要它增长变化是合理的,就比如此例中的ch___mgr

打个比方,VmSize是一个官员拥有多少资产(固定资产、存银行的钱、放家里的钱、等等所有资产的总和)

VmRSS 是这官员人放在家里的钱

我们现在监控这个官员有没有贪污钱财,应该监控他所有的资产VmSize有没有增加,而不是监控放在家里的钱VmRSS

如果官员从银行里面把钱取出来放在家里就认定为贪污,显然很荒唐


你可能感兴趣的:(VmRSS不能判定内存泄漏, VmSize才可以)