linux程序内存信息pmap

pmap命令详解 简介: pmap - report memory map of a process(查看进程的内存映像信息)pmap命令用于报告进程的内存映射关系,是Linux调试及运维一个很好的工具。 用法 pmap [ -x | -d ] [ -q ] pids… pmap -V 选项含义 -x extended Show the extended format. 显示扩展格式 -XX s... 阅读详情

pmap

ldd

stace

要熟悉的几个调试命令!


两个查看内存的文件

$ cat /proc/<pid>/stat | awk '{print $23 / 1024}'
$ cat /proc/<pid>/status | grep -i vmsize

其中,关于内存的是 VSZ 和 RSS 这两个概念

man ps 看看它们的含义:

rss       RSS    resident set size, the non-swapped physical memory that a task has used (in kiloBytes). (alias rssize, rsz).

vsz       VSZ    virtual memory size of the process in KiB (1024-byte units). Device mappings are currently excluded; this is subject to change. (alias vsize).



观察到系统中的指定进程的地址空间分布情况显示一个目标文件或者链接库文件中的目标文件的各个段的大小。该文件从/proc//maps中获得数据。
命令格式:
pmap -x/-d  pid

 

范例:
[root@localhost security]# pmap -d 4993
4993: -bash
Address Kbytes Mode Offset Device Mapping
08047000 596 r-x-- 0000000000000000 003:00006 bash bash的代码段
080dc000 28 rwx-- 0000000000094000 003:00006 bash bash的数据段
080e3000 280 rwx-- 00000000080e3000 000:00000 [ anon ] bash的堆
4d575000 84 r-x-- 0000000000000000 003:00006 ld-2.3.4.so 共享库的代码段
4d58a000 4 r-x-- 0000000000015000 003:00006 ld-2.3.4.so 共享库的数据段
4d58b000 4 rwx-- 0000000000016000 003:00006 ld-2.3.4.so 共享库的堆
4d58e000 1164 r-x-- 0000000000000000 003:00006 libc-2.3.4.so
4d6b1000 4 r-x-- 0000000000123000 003:00006 libc-2.3.4.so
4d6b2000 12 rwx-- 0000000000124000 003:00006 libc-2.3.4.so
4d6b5000 8 rwx-- 000000004d6b5000 000:00000 [ anon ] 匿名物理内存,
4d6de000 8 r-x-- 0000000000000000 003:00006 libdl-2.3.4.so
4d6e0000 8 rwx-- 0000000000001000 003:00006 libdl-2.3.4.so
4d807000 12 r-x-- 0000000000000000 003:00006 libtermcap.so.2.0.8
4d80a000 4 rwx-- 0000000000002000 003:00006 libtermcap.so.2.0.8
b7bc2000 176 r-x-- 0000000000000000 003:00006 GB18030.so
b7bee000 8 rwx-- 000000000002b000 003:00006 GB18030.so
b7bf0000 24 r-xs- 0000000000000000 003:00006 gconv-modules.cache
b7bf6000 1060 r-x-- 0000000002197000 003:00006 locale-archive
b7cff000 2048 r-x-- 0000000000000000 003:00006 locale-archive
b7eff000 36 r-x-- 0000000000000000 003:00006 libnss_files-2.3.4.so
b7f08000 8 rwx-- 0000000000008000 003:00006 libnss_files-2.3.4.so
b7f0a000 8 rwx-- 00000000b7f0a000 000:00000 [ anon ]
b7f20000 8 rwx-- 00000000b7f20000 000:00000 [ anon ]
bff0d000 84 rw--- 00000000bff0d000 000:00000 [ stack ]
ffffe000 4 ----- 0000000000000000 000:00000 [ anon ]
mapped: 5680K writeable/private: 460K shared: 24K

每列的含义如下:
参数 解释
Address:00378000-0038d000 进程所占的地址空间
Kbytes 该虚拟段的大小
RSS 设备号(主设备:次设备)
Anon 设备的节点号,0表示没有节点与内存相对应
Locked 是否允许swapped
Mode 权限:r=read, w=write, x=execute, s=shared, p=private(copy on write)
Mapping: bash 对应的映像文件名


循环显示进程3066的设备格式的最后1行,间隔2秒,

[root@C44 ~]#  while true; do pmap -d  3066 | tail -1; sleep 2; done

mapped: 5412K    writeable/private: 2028K    shared: 0K

mapped: 5412K    writeable/private: 2028K    shared: 0K

mapped: 5412K    writeable/private: 2028K    shared: 0K

mapped: 5412K    writeable/private: 2028K    shared: 0K

mapped: 5412K    writeable/private: 2028K    shared: 0K

mapped: 5412K    writeable/private: 2028K    shared: 0K

mapped: 5412K    writeable/private: 2028K    shared: 0K

mapped: 5412K    writeable/private: 2028K    shared: 0K

mapped: 5412K    writeable/private: 2028K    shared: 0K

mapped: 5412K    writeable/private: 2028K    shared: 0K

mapped: 5412K    writeable/private: 2028K    shared: 0K

mapped: 5412K    writeable/private: 2028K    shared: 0K

mapped: 5412K    writeable/private: 2028K    shared: 0K



内存泄露脚本:

memleak.sh:


#!/bin/sh   

i=1   
until [ ! "$i" -le 10 ]   
do  
        val=$(pidof converter)
        if [ -z "$val" ]; then
        ret=$(pmap -d $val | tail -1)
        fi
        mytime=$(date "+%Y-%m-%d %H:%M:%S")
        filetime=$(date "+%Y-%m-%d")
        echo "[$mytime] [$ret]" >> memleak_$filetime.leak
        sleep 5
done

JVM诊断及工具笔记(3) 使用pmap 定位一次Jvm Native Memory泄漏 native内存泄漏 阅读详情

相关推荐

pmap 命令详解:使用场景、参数解析与实际应用实例

快速定位内存占用异常或内存泄漏问题;了解进程各个内存区域的具体使用情况;分析共享库、堆、栈等内存区域在进程中的分布和权限设置。通过本文,我们详细介绍了 pmap 命令的基本概念、常用参数及其详细功能,并结合实际案例展示了如何使用 pmap 命令进行内存映射分析,包括具体的输入命令及输出解释。希望这篇博客能为你在系统调试和内存分析工作中提供帮助,提升问题排查效率。如果你对 pmap 的使用有更多的疑问或遇到特殊场景,建议结合系统文档和 man 手册(man pmap)进行更深入的探索和实践。

weixin_42587823的博客 1887

pmap 命令

pmap(英文全拼:process memory map)命令用于查看进程的内存映射。pmap 实际上是一个 Sun OS 上的命令,Linux 仅支持其有限的功能。可以显示一个或多个进程的内存状态,其报告进程的地址空间和内存状态信息。对查看完整的进程地址空间很有帮助。语法BashCopy选项-x--extended:显示扩展格式。-d--device:显示设备格式。-q--quiet:不显示 header 和 footer 行。-A:将给定范围内的结果限制为低地址和高地址范围。

大叶子不小的博客 4831

分析Linux下C程序的内存映像

objdump是一个十分强大的命令行工具,它可以用来查看ELF格式的可执行文件、目标文件、共享库等的反汇编代码和符号表等信息。gdb是GNU调试器的缩写,它是一个功能强大的调试工具,可以用来调试C程序。通过这些方法,我们可以深入了解C程序的运行时内存,及时发现并修复内存相关的问题,提高程序的稳定性和安全性。valgrind是一个内存调试和性能分析的工具集,它可以检测程序中的内存泄漏、越界访问等常见问题。pmap命令可以用来显示进程的内存映像,包括每个内存段的起始地址、大小、权限等信息。

JieLun_C的博客 301

pmap(1) command

pmap(process memory map)命令用于查看进程的内存映射,即进程的内存地址空间。pmap 从文件中获得相关数据,用来观察系统中的指定进程的地址空间分布和内存状态信息,包括进程各个段的大小。对查看完整的进程地址空间很有帮助。

Doublelv 的博客专栏。 7165

华硕笔记本+Ubuntu 20.04:用cpupower解决Intel CPU频率上不去/功耗墙问题实战

本文详细介绍了在华硕笔记本Ubuntu 20.04系统下使用cpupower工具解决Intel CPU频率受限和功耗墙问题的实战方法。通过禁用Intel P-State驱动、配置userspace模式以及高级调优技巧,帮助用户突破性能瓶颈,提升编译和计算效率。

weixin_42561476的博客 521

【VS Code+Verilog+Vivado使用】(1)常用插件

VS Code + Verilog + Vivado联合使用说明

XDUryan的博客 5635

linux下分析Java程序内存汇总

使用pmap查看进程内存 运行命令 使用pmap可以查看某一个进程(非java的也可以)的内存使用使用情况, 命令格式: pmap 进程id 示例说明 例如运行: pmap 12358 显示结果如下图(内容较多, 分成几张图说明): 内容开始部分 内容结束部分 上图中, 第一列,内存块起始地址 第二列,占用内存大小 第三列,内存权限 第四列,内存名称,

zlzlei的专栏 2万+

YOLOv8实战:如何用Focaler-IoU提升小目标检测精度(附代码)

本文详细介绍了如何通过Focaler-IoU提升YOLOv8在小目标检测中的精度,包括核心机制解析、代码实现及调优策略。Focaler-IoU通过动态聚焦机制有效解决传统IoU对小目标检测的不足,显著提升模型性能。附有完整的代码示例和实战指南,适合计算机视觉开发者参考。

weixin_29044157的博客 362

pmap 命令介绍和使用案例

PID:要查看的进程ID,可以是一个或多个。

1051

实战指南:基于Windows Server构建企业级AAA认证体系

本文详细介绍了如何在Windows Server环境下构建企业级AAA认证体系,涵盖AD域服务部署、NPS服务器配置及华为设备对接实战。通过整合Radius协议与AD域账号管理,实现网络设备的统一认证与权限控制,提升企业IT安全管理效率。特别适用于需要零成本实现AAA认证的中大型企业。

weixin_28304023的博客 420

uniapp串口通信实战:从零搭建物联网设备控制App(附完整代码)

本文详细介绍了如何使用Uniapp实现串口通信,从零搭建物联网设备控制App。内容涵盖环境配置、串口初始化、数据收发、错误处理等核心功能,并提供了完整的代码示例,帮助开发者快速掌握跨平台串口通信技术,适用于智能农业、工业自动化等物联网场景。

weixin_30369041的博客 597

linux maps,linux下/proc/pid/maps和pmap命令详解

一.示例代码:1.创建pmap.c文件:vi pmap.c2.输入如下内容:#inculde int main(){char *str;str = (char *) malloc(15);while(1){;}return 0;}3.编译pmap.c文件:gcc pmap.c -o pmap4.运行pmap可执行文件./pmap二.查看/proc/pid/maps文件信息1.找到pmap进程的pi...

weixin_33855578的博客 1091

【教程4>第4章>第15节】基于FPGA的costas环的设计构架

目录1.costas环的整体实现结构2. FPGA设计构架3.参考文献 Costas 环是一种用于载波同步的闭环反馈控制系统,主要应用于通信系统中的相干解调。其基本原理是通过鉴相器(Phase Detector,PD)比较接收信号与本地载波信号的相位差,将这个相位差信息经过环路滤波器(Loop Filter,LF)滤波后,去控制数控振荡器(Numerically Controlled Oscillator,NCO)的输出频率和相位,使得本地载波能够跟踪接收信号的载波,最终实现载波同步。我们在《F

FPGA/MATLAB学习教程/源码/项目合作开发 567

linux分析heap命令,关于linux下内存问题排查的工具

对最近linux下排查java内存相关问题的命令做个小的总结linux系列toptop -p PIDpid为12415进程的资源消耗情况。这里是以进程为单位。top -Hp PID这里是以线程为单位。其中RES看到没有线程占用的内存都是3.3g,是因为JVM内存区域中大部分都是线程共享的。同时也可以通过shift+h在-p视图下切换至线程视图(set threads On),如下图:说明:top命...

weixin_32306957的博客 969

Win10或Win11电脑找不到以太网网络适配器的解决方法

Win10或Win11电脑找不到以太网网络适配器的解决方法

Robot_PLC_HMI_Automation 653

C#实战:从零搭建Vosk离线语音转文字系统

本文手把手教你用C#构建离线语音转文字系统,基于NAudio和Vosk实现全流程开发。首先介绍环境搭建,包括NuGet包安装和中文模型配置,强调16kHz单声道音频格式的关键性。接着详细解析音频预处理转换、Vosk模型初始化及识别过程的核心代码,提供多线程优化建议和实时识别扩展思路。文章包含80%以上代码注释,从常见问题排查到性能优化技巧,完整覆盖从"Hello World"到工业级部署的关键技术点,特别适合需要开发本地化语音识别应用的C#开发者。

墨夶的博客 752

text 两端对齐 小程序_01. 可执行程序加载运行

学了C语言,编译成可执行程序,就能运行了。对其能运行很是困惑。最近闲来有时间,下定决心要将其理清楚。手上电脑刚好装的是Linux系统,就在Linux上研究一下。先熟悉可执行文件的格式 - ELF格式。Linux中,readelf可以查看ELF格式的关键信息。readelf -h elffile可以查看elf头信息 查看elf头信息ELF格式中,最关键的是ELF头,程序(Segment)头, 节头,...

weixin_29650949的博客 216

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Linux进程内存分析pmap命令(转)

名称:       pmap - report memory map of a process(查看进程的内存映像信息)用法       pmap [ -x | -d ] [ -q ] pids...       pmap -V选项含义       -x   extended       Show the extended format. 显示扩展格式       -d   device     ...

weixin_34216107的博客 99

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

操作系统实验-rCore-lab1

rCore-lab1

SHyyyyyy___的博客 1382

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Linux查看进程的内存占用情况

1、top   top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器   内容解释:   PID:进程的ID   USER:进程所有者   PR:进程的优先级别,越小越优先被执行   NInice:值   VIRT:进程占用的虚拟内存   RES:进程占用的物理内存   SHR:进程使用的共享内

JoShua 的 水库 1万+

linux 进程内存、CPU 利用率高排查方法

1.查看内存、CPU高的进程ID top -H PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 14509 root 20 0 48.8g 31g 7780 S 133 25.3 96060:52 kvm 4145 root 20 0 4238m 31m 9536 S 24...

火云邪神的博客 1467

linux与进程相关的命令,Linux进程相关的命令-进程和作业管理_Linux常用命令大全...

ipcrm命令_Linux ipcrm命令使用详解:删除消息队列、信号集、或者共享内存标识ipcrm命令用来删除一个或更多的消息队列、信号量集或者共享内存标识。如果要删除和 SharedMemoryID 18602 相关的共享内存段,请输入:ipcrm -m 18602。systemctl命令_Linux systemctl命令使用详解:系统服务管理器指令systemctl命令是系统服务管理器指令...

weixin_36478445的博客 242

linux内存分析工具pmap

pmap工具是linux的工具,能够查看进程用了多少内存,还能分析内存用在上面环节,对于一些长期占用内存居高不下的程序可以分析其行为,命令简单,信息简洁。

程序员乌拉的博客! 1万+

如何在 Linux 上使用 pmap 命令

找出一个 Linux 进程使用了​​多少 RAM 并不是一件简单的事情——尤其是在需要考虑共享内存的时候。值得庆幸的是,该pmap 命令可以帮助您理解这一切。 内存映射 在现代操作系统上,每个进程都存在于自己分配的内存区域或分配空间中。分配区域的边界不直接映射到物理硬件地址。操作系统为每个进程创建一个虚拟内存空间,并充当将虚拟内存映射到物理内存的抽象层。 内核为每个进程维护一个转换表,并由CPU访问。当内核更改在特定CPU 内核上运行的进程时,它会更新将进程和 CPU 内核联系在一起的转换表。 抽象的好处.

学海无涯苦作舟的博客 3342

linux-内存分析工具pmap

pmap工具是linux的工具,能够查看进程用了多少内存,还能分析内存用在上面环节,对于一些长期占用内存居高不下的程序可以分析其行为,命令简单,信息简洁。

ss810540895的博客 3054

Linux pmap命令,查看进程内存占用

概述 pmap - report memory map of a process(查看进程的内存映像信息) 格式 pmap [ -x | -d ] [ -q ] pids... pmap -V 选项含义 -x extended Show the extended format. 显示扩展格式 -d device Show the device format. 显示设备格式 -q quiet Do not display so

YxiaoqiR的博客 2176
上一篇: gdb调试宏、条件断点、命令行参数
下一篇: gdb 调试无堆栈??---pthread_join coredump
linux_vae
博客等级 码龄15年 48粉丝 44原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值