我正在编写一个C++程序,我想找到它在执行过程中使用的总内存。我的操作系统是Ubuntu 19.10。我发现this是一个相关的问题,但它似乎解决了一个非常不同的问题。任何帮助/指导都很好。谢谢!
jgovgodb1#
您可以使用命令行工具top来监视进程的内存使用情况。只需运行:
top
top -p PID
字符串其中PID是要监视其内存使用情况的C++可执行文件的进程ID。
PID
jgzswidk2#
正如你在自己问题的评论部分所提到的,我们可以使用命令行程序GNU time来实现这一点。
time
不过请注意,这个方法只在你想知道你的程序在停止之前使用的最大内存时有用,这对于确认你正在调试的可执行文件是否有超时内存泄漏很有用。如果你想实时监控,那么我推荐@spjy的方法。
通过你的Linux发行版上的任何包管理器获得它。注意,在Linux系统上,它默认带有一个时间的默认版本,因此如果你运行time,它将运行默认版本,而不是你刚刚安装的版本。如果想运行你安装的版本,你可以直接调用它/usr/bin/time。然后你需要的命令是
/usr/bin/time
/usr/bin/time -v <path to executable>
字符串命令完成后,查看Maximum resident set size (kbytes)行,看看程序最多使用了多少内存。
Maximum resident set size (kbytes)
2条答案
按热度按时间jgovgodb1#
您可以使用命令行工具
top
来监视进程的内存使用情况。只需运行:字符串
其中
PID
是要监视其内存使用情况的C++可执行文件的进程ID。jgzswidk2#
正如你在自己问题的评论部分所提到的,我们可以使用命令行程序GNU
time
来实现这一点。注意事项
不过请注意,这个方法只在你想知道你的程序在停止之前使用的最大内存时有用,这对于确认你正在调试的可执行文件是否有超时内存泄漏很有用。
如果你想实时监控,那么我推荐@spjy的方法。
设置
通过你的Linux发行版上的任何包管理器获得它。
注意,在Linux系统上,它默认带有一个时间的默认版本,因此如果你运行
time
,它将运行默认版本,而不是你刚刚安装的版本。如果想运行你安装的版本,你可以直接调用它
/usr/bin/time
。然后你需要的命令是字符串
命令完成后,查看
Maximum resident set size (kbytes)
行,看看程序最多使用了多少内存。