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

Understanding memory used by a program in bash (in ubuntu linux)

本文关键字:内存 程序 ubuntu-linux 了解 bash      更新时间:2023-10-16

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

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

至于锁定内存使用,您可以始终使用ulimit-v来设置进程的最大虚拟地址范围。如果malloc和它的伙伴试图获得超过设定限制的内存,这将导致他们失败。

根据您想投入的工作量,您可以查看getrusage()、getrlimit()和setrlimit(。出于测试目的,您可以在程序开始时调用它们,也可以在家长流程中设置它们,并在孩子时将竞赛程序分叉。然后,当你提交你的程序供比赛考虑时,就不用它们了。

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

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

进程的内存映射由execve(2)初始化,并由mmap(2)syscall(等等…)更改