监视RAM占用的工具

时间:2010-09-15 22:09:28

标签: java ocaml benchmarking ram

我编写了一个应用程序,需要与另一个执行相同工作的应用程序进行比较..我的是OCaml,而另一个是Java。

我想对程序进行两次运行,并在这些执行过程中监视RAM使用情况。这两个程序都是内存和CPU密集型,所以我会有足够的数据来比较它们,但我不知道如何。

我知道对用不同语言编写的应用程序进行基准测试并没有多大意义,但是有一种工具只是在一段时间内监视程序的RAM使用情况,可能会提供数据集或图形作为结果吗?

编辑:理想的操作系统是Mac OS X或只是unix

4 个答案:

答案 0 :(得分:4)

我使用的解决方案与ygrek相当。 只要您使用Unix,它在实现语言方面就非常普遍。 一个小问题是,可以用于此目的的命令topps在BSD Unix(Mac OS X派生自的)和Linux上的工作方式不同。我猜他的命令行是针对Linux的。

对于Mac OS X,我使用了:

top -s 10 -l 10000 | grep <PID or process name>

和Linux:

top -d 10 -n 10000 | grep <PID or process name>

10是以秒为单位的采样周期。

如果您想从OCaml的GC获取信息,可以使用OCaml's GC module,但这与Java程序的行为无法直接比较。

编辑添加:涉及GC的地方,在内存开销和CPU时间开销之间存在权衡。 GC可以更加努力地使死区块更快地可用,从而降低内存消耗。如果您发现这使得比较两个程序变得困难,您可以调整OCaml的GC以使其与Java GC使用相同的权衡。这在GC模块中有记录。我希望Java也可以调整这个设置。

答案 1 :(得分:3)

while : ; do ps --no-header -o %cpu,vsz,rss -p PID; sleep 1 ; done

答案 2 :(得分:2)

您可以使用/ usr / bin / jvisualvm

监控Java使用情况

Activity Monitor程序可以粗略估计任何常用Unix程序的资源使用情况。

答案 3 :(得分:2)

Valgrind的Massif工具可以为本机代码执行此操作。