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

时间:2012-01-31 18:20:49

标签: c++ linux bash memory

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

3 个答案:

答案 0 :(得分:4)

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

至于锁定内存使用情况,您始终可以使用ulimit -v设置进程的最大虚拟地址范围。如果他们试图获得比设置限制更多的内存,这将导致malloc及其好友失败。

答案 1 :(得分:1)

根据您要投入的工作量,您可以查看getrusage()getrlimit()setrlimit()。出于测试目的,您可以在程序开始时调用它们,也可以在父进程中设置它们,并在孩提时将您的竞赛程序分开。当你提交你的节目以供比赛考虑时,请免除它们。

答案 2 :(得分:1)

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

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

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