求助,linux 程序内存统计

狼异族 2023-12-21 10:52:44

我在子线程申请分配 10M 内存,但是在进行内存统计的时候发现, vmSize 增加 64M,这个不是我想要的,我只想统计我申请的10M的内存,请问这个有没有什么方法?

...全文
533 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lennon1994 2023-12-22
  • 打赏
  • 举报
回复

在 Linux 系统中,内存的分配和统计是一个复杂的过程,尤其是当涉及到虚拟内存(vmSize)时。您提到的情况,即在子线程中申请 10MB 内存,但 vmSize 增加了 64MB,可能由以下几个原因导致:

1.    内存分页: Linux 采用分页管理内存。当您申请一定量的内存时,操作系统可能会分配更多的内存页来满足请求。页的大小通常是固定的(例如 4KB),因此实际分配的内存可能会比请求的多。
2.    内存对齐: 为了提高性能,内存分配通常需要对齐。这可能导致实际分配的内存大于请求的内存。
3.    堆管理开销: 分配器可能会为管理堆内存而保留额外空间。
4.    虚拟内存和物理内存: vmSize 表示的是虚拟内存的大小,它包括所有已分配的内存、映射的文件以及延迟分配的内存。这并不完全反映实际使用或分配的物理内存大小。

为了更准确地统计您的程序实际使用的内存,可以考虑以下方法:

•    使用 mallinfo() 或 malloc_stats(): 这些函数可以提供关于动态分配内存的信息,但它们可能不会包括所有类型的内存使用情况。
•    进程内存使用情况: 您可以查看 /proc/[pid]/status 或 /proc/[pid]/smaps 中的 VmRSS 字段,它表示进程的实际物理内存使用量,更接近您实际使用的内存大小。
•    自定义内存分配器: 实现或使用一个自定义内存分配器,以更精确地控制和监控内存的分配和释放。
•    使用专业的性能分析工具: 如 Valgrind、gperftools 等,这些工具可以提供更详细的内存使用分析。

每种方法都有其优势和限制,可能需要根据您的具体需求来选择最合适的方法

  • 打赏
  • 举报
回复

这个问题可能是由于glibc的内存管理机制导致的。在Linux中,当你在一个线程中分配内存时,glibc可能会为这个线程分配一个内存池。这个内存池的大小通常会大于你实际请求的内存大小,这就可能导致你观察到的vmSize的增加1。

如果你想要更精确地控制内存的使用,你可以尝试以下方法:

  1. 使用mmap:你可以直接使用mmap来分配内存,这样你可以更精确地控制分配的内存大小。但是这样做可能会使你的代码变得更复杂。
  1. 调整glibc的行为:你可以通过设置环境变量MALLOC_ARENA_MAX来限制glibc创建的内存池的数量1。这可以帮助你减少因内存池导致的额外内存使用。
  1. 使用自定义的内存管理器:你也可以考虑使用一个自定义的内存管理器,如jemalloc或tcmalloc,这些内存管理器可能会提供更多的控制选项。

请注意,这些方法可能会影响你的程序的性能和行为,所以在使用它们之前,你应该充分理解它们的工作原理和潜在的影响213。希望这个信息对你有所帮助!

北方小镇805 2023-12-21
  • 打赏
  • 举报
回复

使用malloc_usable_size

内容概要:本报告基于寻汇与万事达卡在2026年联合发布的《超越自动化:定义智能体驱动的全球支付》白皮书,系统分析了AI智能体在B2B跨境支付领域的应用与发展。报告指出,传统跨境支付存在效率低、人工干预多、合规风险高等问题,当前正从数字化、数据化迈向“自主化”新阶段。AI智能体可在授权下自主完成支付、换汇、合规审核、对账等全流程操作,核心技术包括深度强化学习、自然语言处理和图神经网络,用于路径优化、合规解析与异常检测。报告揭示了决策可解释性不足、跨系统协同标准缺失、安全审计机制缺位三大研究空白,并探讨了法律责任归属、监管碎片化、数据主权与技术可靠性四大现实挑战。寻汇与万事达卡的合作构建了“智能体编排引擎”与全球合规决策网络,首次提出L0-L5的智能体自主化等级框架,推动行业标准化。预计2026至2027年将实现首批大规模商业部署,提升支付效率超30%。; 适合人群:金融科技研究人员、AI技术开发者、跨境支付行业从业者、企业财资管理人员及政策监管机构相关人员。; 使用场景及目标:①理解AI智能体在跨境支付中的技术架构与应用场景;②把握自主化支付的演进趋势与商业化前景;③为金融机构和技术公司布局AI驱动型支付系统提供战略参考;④助力监管机构制定适应智能体时代的合规框架。; 阅读建议:本报告兼具技术深度与产业视野,建议结合白皮书原文及相关技术文献对照研读,重点关注智能体决策逻辑、合规实现机制与跨系统集成方案,并关注后续试点项目的实际成效与监管反馈。

23,223

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧