如何在执行期间测量C / C ++ / Java程序使用的内存?

时间:2012-04-07 18:57:08

标签: java c++ c memory memory-management

我正在尝试创建像spoj.pl这样的编程法官。我必须测量C / C ++ / Java程序正在使用的时间和内存。我想为我希望执行的程序设置最大内存限制。能否请你建议我怎么做。

3 个答案:

答案 0 :(得分:1)

为了分析时间和内存消耗,你可以使用callgrind: http://valgrind.org/docs/manual/cl-manual.html

答案 1 :(得分:1)

System-,where-,how-,what - ,...- dependent。


限制,即:

Linux命令行:> $ ulimit -v NNN && ./tha_prog$ man ulimit$ ulimit -a

Linux C编码:> setrlimit() linux.die:setrlimit,opengroup:setrlimit

Windows:CreateJobObjectJob Objects

然后问题也变成了限制。静态与动态库等。


简介:

Valgrind与callgrind, - 和kcachegrind,+++。

答案 2 :(得分:0)

在Windows上,您可以使用jobs,它们是内核对象,允许您对当前不在其他作业中的任何进程进行沙箱处理。您可以应用所有不同类型的限制,包括最大处理时间和内存/工作集限制。

有几个步骤
1.调用CreateJobObject以获取内核对象的句柄
2.致电SetInformationJobObject设置您的限制 3.创建要对其施加限制的暂停流程 4.使用作业和处理句柄调用AssignProcessToJobObject 5.通过调用ResumeThread

恢复进程的主线程