性能指标之资源指标-内存-是否有内存泄漏(2)


进程使用的共享内存段


除了Data Segment可以造成内存泄露,如果进程分配共享内存,也可能造成内存泄露。


共享内存是某个进程分配,其他进程可以访问的内存段,共享内存会映射到每个进程的地址空间。那么如何查看指定进程消耗的共享内存呢?


首先,还是要介绍概念,共享内存在AIX上可能有两种内存段:shared memory segment和memory mapped segment。为什么有两种段呢?这是由于程序调用了不同的实现接口导致的(System V Shared Memory services (shmat) 和BSD Memory Mapped Services)。BSD Memory Mapped Services可以将文件直接映射到内存而省去中间的buffer,但它也可以用来创建共享内存,它创建出来的共享内存段就是memory mapped segment。


查看指定进程消耗的共享内存的具体方法如下


1、 获取来源


32位程序

# svmon -P 进程号| egrep "Vsid|shared memory|mmap maps"


64位程序

# svmon -P 进程号| egrep "Vsid|shmat/mmap"


查看virtual字段


2、 指标说明


如果查出来某个内存段是memory mapped segment类型的,这个segment里面是不是共享内存,需要用ipcs –mS辅助判断(因为memory mapped segment也可能是文件直接映射内存)。ipcs查到的都是共享内存,因此可以通过svmon –P中这个段的Vsid( virtual segment ID)在ipcs中查找有没有这个段号。


这里没有现成的例子,只是截个示意图




ipcs –mS看到的是所有共享内存段,而没有段的大小。如果看段的大小可以加-b选项。需注意,-b选项看到的是可分配的最大值,而不是已分配的。



SEGSZ的单位是Byte。-b列出共享内存段以及消息、信号量的最大值,也就是可分配的最大值,而不是已分配的(数据库程序除外)。-m列出活动的共享内存段。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值