当前位置: 首页 > article >正文

【Linux内存泄漏】自创pamp 内存快照比对定位内存泄漏【2024-11-07】

下图是用于内存分析,pamp命令抓取的两次内存快照详情:
[root@localhost ~]# pmap -X 6559 1>& 20241029_1416.log

分析内存是否有增长,主要留意三个字段,Size、Rss和Pss

  1. Size
    • 含义:表示该内存段的总大小(以字节为单位)。
    • 解释:这是分配给该内存段的总内存量,无论是否已经被实际使用。这包括代码段、数据段、堆、栈以及共享库等。
    • 用途:了解进程分配了多少内存,但不一定反映了实际使用的内存量。
  2. RSS (Resident Set Size)
    • 含义:表示该内存段当前驻留在物理内存中的大小(以字节为单位)。
    • 解释:这是进程实际占用的物理内存量,包括代码段、数据段、堆、栈以及共享库等。RSS 不包括交换到磁盘上的内存。
    • 用途:了解进程当前实际使用的物理内存量,是衡量进程内存使用情况的一个重要指标。
  3. PSS (Proportional Set Size)
    • 含义:表示该内存段在物理内存中的比例大小(以字节为单位)。
    • 解释:PSS 是一种更精确的内存使用度量,它考虑了共享内存的影响。对于每个共享内存段,PSS 会根据共享该段的进程数量进行分摊。例如,如果一个共享库被两个进程共享,那么每个进程的 PSS 会分摊一半的共享库大小。
    • 用途:了解进程实际使用的物理内存量,特别是在多个进程共享内存的情况下,PSS 提供了更准确的度量。

如下图:SIZE = 1408 RSS = 1216 PSS = 5 ,意味这这个内存是共享内存,且共享的位置很多。因为分到这个进程的占比是 5/1408 或 5/1216。这个内存段关联的文件是libc-2.28.so,r-xp表式这个内存段是 读权限、执行权限和私有(Private)。

如下图,左侧的5间隔2天后变成右侧的6,是因为有使用这个库的进程退出,导致PSS变大。例如常用的libc库的这个PSS相比RSS会小很多。我们自己开发的so库,一般都是一样的。

综上分析,RSS分析可以得出内存是否有有效的增长。

如下图比对快照,分析结论在图上直接做了标注。

进一步的做内存分析
Gdb -a pid
dump memory /home/myb/桌面/memory_dump_0x0000629000000000.bin 0x0000629000000000 0x0000629003000000

dump memory /home/myb/桌面/memory_dump_0000632000000000.bin 0x0000632000000000 0x000063200178A000


http://www.kler.cn/a/383583.html

相关文章:

  • 计算机的发展史
  • 删除 需要来自XXXX的权限才能对此文件夹进行更改 文件的解决办法
  • GAN的基本原理
  • 映像?什么是映像
  • java 正则匹配json中占位符
  • 【LeetCode】【算法】209. 课程表
  • npm镜像的常用操作
  • 职场逆袭!学会管理上司,你也能成为职场赢家
  • C语言 | Leetcode C语言题解之第524题通过删除字母匹配到字典里最长单词
  • 代码随想录算法训练营第二十一天 | LeetCode93.复原IP地址、LeetCode78.子集、LeetCode90.子集II
  • RFID应急消防管控:科技与效率的完美结合
  • golang学习2
  • 轮播图【HTML+CSS+JavaScript】
  • ubuntu 之 压缩与解压缩(7zip,zip,tar.gz,rar...)
  • 从零开始学python 6(持续更新中ing)
  • 知识总结三
  • Webserver(4.3)TCP通信实现
  • 基于CNN-BiLSTM的时间序列数据预测,15个输入1个输出,可以更改数据集,MATLAB代码
  • V4L2 sub-devices 翻译
  • Python基础学习_01
  • Android 使用自定义注解标注当前类
  • STM32学习笔记-外部中断和外部时钟
  • 前端学习笔记—Vue3特性
  • web安全测试渗透案例知识点总结(下)——小白入狱
  • Zookeeper分布式锁实现
  • 一个百度、必应搜索引擎图片获取下载的工具包