linux如何对c++进行内存分析

背景

在工作中,我遇到一个问题,需要将c写的进程部署到MCU上。由于MCU上可用的RAM 非常有限,所以在部署时就需要考虑到使用内存大小。所以为了搞清楚,内存的主要消耗在那一块。

分析方法以及原理

原理

在linux 中每个进程在proc 中都有一个对应的文件存储其重要信息。其命令如下:
#!/bin/bash

pid=`ps -ef | grep process_name`  # 找到pid
cat /proc/${pid}/smaps   # 这个文件中存储该进程的所有内存映射

其结果如下这是一个例子:

5d76f76fb000-5d76f76fc000 r--p 00000000 08:03 3721356                    /home/lhd/fastdds_repo/tmp/micro-dds-client/micro_client/examples/SubscribeHelloWorld/build/SubscribeHelloWorldClient
Size:                  4 kB
KernelPageSize:        4 kB
MMUPageSize:           4 kB
Rss:                   4 kB
Pss:                   4 kB
Pss_Dirty:             4 kB
Shared_Clean:          0 kB
Shared_Dirty:          0 kB
Private_Clean:         0 kB
Private_Dirty:         4 kB
Referenced:            4 kB
Anonymous:             0 kB
KSM:                   0 kB
LazyFree:              0 kB
AnonHugePages:         0 kB
ShmemPmdMapped:        0 kB
FilePmdMapped:         0 kB
Shared_Hugetlb:        0 kB
Private_Hugetlb:       0 kB
Swap:                  0 kB
SwapPss:               0 kB
Locked:                0 kB
THPeligible:           0
VmFlags: rd mr mw me sd 
5d76f76fc000-5d76f7705000 r-xp 00001000 08:03 3721356                    /home/lhd/fastdds_repo/tmp/micro-dds-client/micro_client/examples/SubscribeHelloWorld/build/SubscribeHelloWorldClient
Size:                 36 kB
KernelPageSize:        4 kB
MMUPageSize:           4 kB
Rss:                  36 kB
Pss:                  36 kB
Pss_Dirty:            36 kB
Shared_Clean:          0 kB
Shared_Dirty:          0 kB
Private_Clean:         0 kB
Private_Dirty:        36 kB
Referenced:           36 kB
Anonymous:             0 kB
KSM:                   0 kB
LazyFree:              0 kB
AnonHugePages:         0 kB
ShmemPmdMapped:        0 kB
FilePmdMapped:         0 kB
Shared_Hugetlb:        0 kB
Private_Hugetlb:       0 kB
Swap:                  0 kB
SwapPss:               0 kB
Locked:                0 kB
THPeligible:           0
VmFlags: rd ex mr mw me sd 
5d76f7705000-5d76f770b000 r--p 0000a000 08:03 3721356                    /home/lhd/fastdds_repo/tmp/micro-dds-client/micro_client/examples/SubscribeHelloWorld/build/SubscribeHelloWorldClient
Size:                 24 kB
KernelPageSize:        4 kB
MMUPageSize:           4 kB
Rss:                  24 kB
Pss:                  24 kB
Pss_Dirty:            24 kB
Shared_Clean:          0 kB
Shared_Dirty:          0 kB
Private_Clean:         0 kB
Private_Dirty:        24 kB
Referenced:           24 kB
Anonymous:             0 kB
KSM:                   0 kB
LazyFree:              0 kB
AnonHugePages:         0 kB
ShmemPmdMapped:        0 kB
FilePmdMapped:         0 kB
Shared_Hugetlb:        0 kB
Private_Hugetlb:       0 kB
Swap:                  0 kB
SwapPss:               0 kB
Locked:                0 kB
THPeligible:           0
VmFlags: rd mr mw me sd 
5d76f770b000-5d76f770c000 r--p 0000f000 08:03 3721356                    /home/lhd/fastdds_repo/tmp/micro-dds-client/micro_client/examples/SubscribeHelloWorld/build/SubscribeHelloWorldClient
Size:                  4 kB
KernelPageSize:        4 kB
MMUPageSize:           4 kB
Rss:                   4 kB
Pss:                   4 kB
Pss_Dirty:             4 kB
Shared_Clean:          0 kB
Shared_Dirty:          0 kB
Private_Clean:         0 kB
Private_Dirty:         4 kB
Referenced:            4 kB
Anonymous:             4 kB
KSM:                   0 kB
LazyFree:              0 kB
AnonHugePages:         0 kB
ShmemPmdMapped:        0 kB
FilePmdMapped:         0 kB
Shared_Hugetlb:        0 kB
Private_Hugetlb:       0 kB
Swap:                  0 kB
SwapPss:               0 kB
Locked:                0 kB
THPeligible:           0
VmFlags: rd mr mw me ac sd 
5d76f770c000-5d76f770d000 rw-p 00010000 08:03 3721356                    /home/lhd/fastdds_repo/tmp/micro-dds-client/micro_client/examples/SubscribeHelloWorld/build/SubscribeHelloWorldClient
Size:                  4 kB
KernelPageSize:        4 kB
MMUPageSize:           4 kB
Rss:                   4 kB
Pss:                   4 kB
Pss_Dirty:             4 kB
Shared_Clean:          0 kB
Shared_Dirty:          0 kB
Private_Clean:         0 kB
Private_Dirty:         4 kB
Referenced:            4 kB
Anonymous:             4 kB
KSM:                   0 kB
LazyFree:              0 kB
AnonHugePages:         
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值