有什么方法可以检查我使用命令行运行的代码的最大内存消耗?

有什么方法可以检查我使用命令行运行的代码的最大内存消耗?

time命令对于检查我开发的一段代码运行需要多少时间非常有用...但是,我也希望有一种方法来检查我开发的代码的内存消耗,无论我使用的语言。所以,如果是bash,,python或者node.js......我想有一种方法来检查我在代码上使用了多少RAM内存,这样我就可以更多地了解我在做什么,避免内存重复和类似的东西。是否有任何命令行可用于检查我创建的脚本消耗的内存量?

答案1

在许多类 Unix 系统上,是的,GNU 的实现/usr/bin/time(使用路径,以避免类似的 shell 内置)会告诉您给定程序执行使用了多少内存;例如:

$ /usr/bin/time ls
...
0.00user 0.00system 0:00.00elapsed 50%CPU (0avgtext+0avgdata 2208maxresident)k
0inputs+0outputs (0major+139minor)pagefaults 0swaps

显示ls最多使用 2208K RAM。

其他工具如瓦尔格林德将显示更多信息,特别是有关堆使用情况的信息:

$ valgrind ls
...
==10107== 
==10107== HEAP SUMMARY:
==10107==     in use at exit: 32,928 bytes in 83 blocks
==10107==   total heap usage: 506 allocs, 423 frees, 97,271 bytes allocated
==10107== 
==10107== LEAK SUMMARY:
==10107==    definitely lost: 0 bytes in 0 blocks
==10107==    indirectly lost: 0 bytes in 0 blocks
==10107==      possibly lost: 0 bytes in 0 blocks
==10107==    still reachable: 32,928 bytes in 83 blocks
==10107==         suppressed: 0 bytes in 0 blocks
==10107== Rerun with --leak-check=full to see details of leaked memory
==10107== 
==10107== For counts of detected and suppressed errors, rerun with: -v
==10107== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)

相关内容