首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >了解程序在bash中使用的内存(在ubuntu linux中)

了解程序在bash中使用的内存(在ubuntu linux中)
EN

Stack Overflow用户
提问于 2012-02-01 02:20:49
回答 3查看 1K关注 0票数 1

在一些编程竞赛中,问题有内存限制(如64MB或256MB)。如何使用bash命令了解我的程序(用C++编写)所使用的内存?有没有办法限制程序使用的内存?如果程序使用的内存超过限制,它应该终止。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-01 02:24:54

top命令将为您提供所有正在运行的进程和当前内存和交换的列表,或者,如果您喜欢GUI,则可以使用系统监视器应用程序。

至于锁定内存使用,您总是可以使用ulimit -v来设置进程的最大虚拟地址范围。这将导致malloc和它的伙伴在尝试获取超过设置限制的内存时失败。

票数 4
EN

Stack Overflow用户

发布于 2012-02-01 02:43:03

根据您想要投入多少工作,您可以查看getrusage()getrlimit()setrlimit()。出于测试目的,您可以在程序开始时调用它们,或者可能在父进程中设置它们,然后将竞赛程序派生为子进程。然后,当你提交你的程序以供竞赛考虑时,就不需要它们了。

票数 1
EN

Stack Overflow用户

发布于 2012-02-01 04:18:04

此外,对于进程1234,您可以查看/proc/1234/maps/proc/1234/smaps或运行pmap 1234,所有这些命令都会显示pid为1234的进程的内存映射。

尝试运行cat /proc/self/maps以获取一个示例(运行该cat命令的进程的内存映射)。

进程的内存映射由execve(2)初始化,并由mmap(2)系统调用(等...)更改。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9084808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档