在Linux中监视程序的内存使用情况

Linux中是否有可用的graphics或文本显示程序的内存使用情况的工具? 例如,如果我编写一个C ++程序,并想validation对象在内存中是否正确分配和释放,是否有可用的应用程序可视化地显示正在实例化和删除的对象? 当我用Visual Studio进行编程时,我记得单步执行一个程序并使用debugging窗格来监视内存使用情况,并且正在寻找类似于Linux的东西。

Solutions Collecting From Web of "在Linux中监视程序的内存使用情况"

这不是你正在寻找的东西,而是看看Valgrind 。

我通常运行顶部来关注整体内存使用情况。

while (/proc/<pid>/status) echo "VMSize: `ps -p <pid> -o vsize=`" >> ! mem.out pstack <pid> >> mem.out sleep 10 end 

grep VMSize mem.out | awk -F':' '{print $2}' | sort -r -n | head -1 grep VMSize mem.out | awk -F':' '{print $2}' | sort -r -n | head -1会给你高峰记忆。

还可以使用mem.out查看内存占用情况和当前的堆栈关联。

计算一个进程在支持虚拟内存的操作系统上使用多少内存是非常困难的。

问题并不在于它使用了多少内存,而是多少是私有的,多少是共享的。

你可以看看/ proc / pid / maps或/ proc / pid / smaps(也许)。 这些文件只会告诉你这个进程已经映射到了它的地址空间中的内存了多少,而不是它使用了多少,而且绝对不会与系统中的其他进程共享多少内存。

即使是“私人”地图也可以被共享,因为fork()是在写时拷贝的,所以一个私人页面仍然可以与其他一些(相关 – 通常是父级或兄弟)进程共享。 而且,已经映射但从未使用的页面根本不会消耗空间。

可以看到每个映射的RSS(Resident Set Size),但是这只能告诉你有多少是驻留的(在RAM中,而不是交换到一个交换文件中,还没有分配,还是没有从映射中加载需求文件),现在共享多少,用什么。

我想你最好的办法是统计私人匿名记忆的数量,这在某些情况下可能是好的。

1)首先运行

 ps -u <your user id> 

2)从1)的输出中获取您要监控的进程的PID,

3)然后运行

 top -p <the pid of the process you want to monitor> 

conky( 屏幕截图 )是一个非常简单的计算机资源查看器张贴在桌面壁纸。 我留意内存的使用和特定的程序使用。