linux top VIRT RES SHR SWAP DATA内存参数详解

Linux top VIRT RES SHR SWAP DATA内存参数详解


  其实很早之前就想开博客,写一写码农几年自己积攒下来的知识与见解。看过很多文章有过很多感触,有些收获很值得梳理一下认真思考反思的。今天就先从基本的top开始吧,在网上看了很多关于top讲解内存参数的文章,千篇一律,大部分都是不经深思的转载,自我验证的却只有少数,也许大家忙于工作,急于找到问题并快速解决,而忽略了事后思考总结给自己带来成长的乐趣了吧。不能否认生活节奏的加快让我们失去了很多自我反省与总结的时间与机会。好了,闲话到此,让我们一起看下top关于内存参数的真面目吧。
  对于使用Linux/Unix系统的人来说,top已经是在常用不过的工具了,很多人都知道里面的参数的意思,却很少有人知道这些参数值在程序中是怎么反射出来的。例如:VIRT空间为什么比物理内存大?RES的空间在程序中都包含哪几部分?SWAP交换的都是那些空间?SHR是真正开辟的共享内存空间的大小么?DATA的空间大小指的又是什么,它和RES有那些区别?通过这些内存参数怎么看出我的程序有内存泄露等等问题,待我一一给你解答。
  为了搞清楚以上的问题,我们用以下代码进行测试对其一一验证,并得出我们想要的结果。
  科普篇:先说下VIRT、RES、SHR、SWAP、DATA这几个参数的意思吧(其他参数不是本篇的重点在此略过,关于top的博客都能找到)。咱们先看下Linux下的那个无所不知的男人怎么说的:
  VIRT  -- Virtual Image (KB)  VIRT = SWAP +RES  (公式1)
  Thetotal amount of virtual memory used by the task. It includes all code, data andshared libraries plus pages that have been swapped out. (一个任务所使用的虚拟内存的总数。它包括所有的代码,数据和共享库,加上已换出的页面)说的还是比较清楚的,仔细的你或许已经从这段介绍中发现公式1是存在一些问题的(下面会做解释)
  RES  -- Resident size (KB)  RES = CODE + DATA (公式2)
  The non-swappedphysical memory a task has used. (一个任务正在使用的没有交换的物理内存)我们一般称为驻留内存空间。先给大家声明,man给出的这个公式2是有问题的,这个错误万恶的公式2估计误导了很多人。
  SHR  -- Shared Memory size (KB)
  The amount ofshared memory used by a task. It simply reflects mem
  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值