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

C++ exe程序内存占用分析之Linux篇

基础分析 
git clone --recursive https://github.com/google/bloatycd bloatygit submodule updatemkdir buildcd buildcmake ..make -j8bloaty bloatyFILE SIZE        VM SIZE    --------------  --------------35.5%  16.9Mi   0.0%       0    .debug_info25.2%  12.0Mi   0.0%       0    .debug_loc11.2%  5.36Mi   0.0%       0    .debug_str6.9%  3.29Mi   0.0%       0    .debug_ranges5.8%  2.75Mi   0.0%       0    .debug_line5.2%  2.46Mi  34.0%  2.46Mi    .rodata4.6%  2.21Mi  30.6%  2.21Mi    .text0.0%       0  14.0%  1.01Mi    .bss1.1%   556Ki   0.0%       0    .strtab0.9%   441Ki   6.0%   441Ki    .data0.8%   395Ki   5.4%   395Ki    .rela.dyn0.7%   344Ki   4.7%   344Ki    .data.rel.ro0.7%   334Ki   0.0%       0    .debug_abbrev0.6%   274Ki   3.7%   274Ki    .eh_frame0.5%   226Ki   0.0%       0    .symtab0.1%  50.5Ki   0.7%  50.5Ki    .gcc_except_table0.1%  49.3Ki   0.7%  49.3Ki    .eh_frame_hdr0.1%  37.0Ki   0.0%       0    .debug_aranges0.0%  21.6Ki   0.3%  18.7Ki    [25 Others]0.0%  6.67Ki   0.0%       0    [Unmapped]0.0%  6.06Ki   0.1%  6.06Ki    .dynstr100.0%  47.7Mi 100.0%  7.22Mi    TOTA
源文件分析
bloaty bloaty -d compileunitsFILE SIZE        VM SIZE    --------------  -------------- 37.0%  17.6Mi  48.6%  3.51Mi    [155 Others]15.1%  7.22Mi   3.5%   258Ki    /home/vboxuser/Desktop/bloaty/third_party/protobuf/src/google/protobuf/descriptor.cc6.5%  3.09Mi   2.9%   216Ki    /home/vboxuser/Desktop/bloaty/third_party/protobuf/src/google/protobuf/descriptor.pb.cc4.8%  2.28Mi   1.4%   100Ki    /home/vboxuser/Desktop/bloaty/third_party/protobuf/src/google/protobuf/text_format.cc4.7%  2.25Mi   5.7%   424Ki    /home/vboxuser/Desktop/bloaty/third_party/capstone/arch/ARM/ARMDisassembler.c3.1%  1.48Mi   1.2%  90.7Ki    /home/vboxuser/Desktop/bloaty/third_party/protobuf/src/google/protobuf/generated_message_reflection.cc2.6%  1.25Mi   0.5%  33.3Ki    /home/vboxuser/Desktop/bloaty/third_party/protobuf/src/google/protobuf/descriptor_database.cc2.4%  1.15Mi   0.9%  68.6Ki    /home/vboxuser/Desktop/bloaty/third_party/protobuf/src/google/protobuf/extension_set.cc2.3%  1.07Mi   0.4%  31.6Ki    /home/vboxuser/Desktop/bloaty/third_party/protobuf/src/google/protobuf/generated_message_util.cc0.8%   379Ki  14.6%  1.06Mi    /home/vboxuser/Desktop/bloaty/third_party/capstone/arch/M68K/M68KDisassembler.c2.1%  1.02Mi   0.8%  60.9Ki    /home/vboxuser/Desktop/bloaty/third_party/protobuf/src/google/protobuf/wire_format.cc2.1%  1.02Mi   1.5%   111Ki    /home/vboxuser/Desktop/bloaty/third_party/capstone/arch/AArch64/AArch64Disassembler.c2.0%   981Ki  11.7%   862Ki    /home/vboxuser/Desktop/bloaty/third_party/capstone/arch/X86/X86Mapping.c2.0%   981Ki   1.1%  79.1Ki    /home/vboxuser/Desktop/bloaty/third_party/capstone/arch/SystemZ/SystemZDisassembler.c2.0%   970Ki   0.5%  37.1Ki    /home/vboxuser/Desktop/bloaty/third_party/re2/re2/re2.cc1.9%   920Ki   0.8%  60.3Ki    /home/vboxuser/Desktop/bloaty/third_party/protobuf/src/google/protobuf/map_field.cc1.9%   920Ki   0.5%  33.3Ki    /home/vboxuser/Desktop/bloaty/third_party/re2/re2/dfa.cc1.8%   889Ki   1.7%   125Ki    /home/vboxuser/Desktop/bloaty/src/bloaty.cc1.6%   788Ki   0.5%  33.7Ki    /home/vboxuser/Desktop/bloaty/third_party/re2/re2/regexp.cc1.6%   781Ki   0.7%  51.4Ki    /home/vboxuser/Desktop/bloaty/third_party/protobuf/src/google/protobuf/repeated_field.cc1.6%   766Ki   0.5%  37.9Ki    /home/vboxuser/Desktop/bloaty/third_party/protobuf/src/google/protobuf/message.cc100.0%  47.7Mi 100.0%  7.22Mi    TOTAL
测试

#include <iostream>const char* data = "而此时是ii四十九而此时是ii四十九而此时是ii四十九而此时是ii四十九而此时是ii四十九而此时是ii四十九而此时是ii四十九而此时是ii四十九而此时是ii四十九而此时是ii四十九";int main() {printf("test main\n");
}
g++ -g main.cpp -o mytest
bloaty mytest -d compileunitsFILE SIZE        VM SIZE    --------------  -------------- 56.9%  21.6Ki  16.6%     609    main.cpp22.2%  8.46Ki   0.0%       0    [Unmapped]5.9%  2.25Ki   0.0%       0    [ELF Section Headers]4.1%  1.57Ki   0.0%       0    [section .symtab]1.9%     728  19.9%     728    [ELF Program Headers]1.5%     603   0.0%       0    [section .strtab]1.3%     512  14.0%     512    [section .dynamic]1.0%     394   9.2%     335    [16 Others]0.9%     346   0.0%       0    [section .shstrtab]0.6%     247   6.7%     247    [section .rodata]0.6%     240   6.6%     240    [section .dynsym]0.6%     233   6.4%     233    [section .text]0.6%     229   6.3%     229    [section .dynstr]0.4%     152   0.0%       0    0.3%     136   3.7%     136    [section .eh_frame]0.2%      88   2.4%      88    [section .got]0.2%      80   2.2%      80    [section .gnu.version_r]0.2%      64   1.7%      64    [ELF Header]0.2%      64   1.7%      64    [section .plt]0.1%      48   1.3%      48    [section .note.gnu.property]0.1%      48   1.3%      48    [section .plt.sec]100.0%  38.0Ki 100.0%  3.58Ki    TOTAL
 参考

C++ exe程序内存占用分析-CSDN博客 


创作不易,小小的支持一下吧!

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Java 设计模式之策略模式 (Strategy Pattern) 详解
  • 【C语言篇】猜数字游戏(赋源码)
  • js如何判断一个数在某一个等差区间之内
  • Mojo AI编程语言(十七)跨平台开发:应用广泛适配
  • 香橙派下搭建目标检测的开发环境
  • 数字万用表怎么做仪器校准?不准怎么调?
  • PyTorch安装
  • JetBrains:XML tag has empty body警告
  • Go 语言中切片的访问
  • 第十四节:Vben Admin实战-系统管理之角色菜单绑定
  • qt安装图文
  • java基础--接口和抽象类的区别
  • 2022年庐阳区青少年信息学科普日真题- 索道(way)
  • 【开源】嵌入式Linux(IMX6U)应用层综合项目(2)--智能家居APP
  • 推理还原的干货
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • Docker: 容器互访的三种方式
  • ES6语法详解(一)
  • express.js的介绍及使用
  • httpie使用详解
  • IndexedDB
  • Java到底能干嘛?
  • MD5加密原理解析及OC版原理实现
  • Spark RDD学习: aggregate函数
  • Spring Cloud中负载均衡器概览
  • storm drpc实例
  • 机器学习 vs. 深度学习
  • 将回调地狱按在地上摩擦的Promise
  • 解析 Webpack中import、require、按需加载的执行过程
  • 前嗅ForeSpider中数据浏览界面介绍
  • 微服务入门【系列视频课程】
  • 因为阿里,他们成了“杭漂”
  • Android开发者必备:推荐一款助力开发的开源APP
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • %@ page import=%的用法
  • %check_box% in rails :coditions={:has_many , :through}
  • (7)摄像机和云台
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (Python第六天)文件处理
  • (分类)KNN算法- 参数调优
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (附源码)计算机毕业设计大学生兼职系统
  • (力扣)循环队列的实现与详解(C语言)
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (七)glDrawArry绘制
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (十八)SpringBoot之发送QQ邮件
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .net refrector