我有一些可执行工具。在我的Java应用程序中,我需要将它们中的每一个启动几百次,并根据不同的输入来测量它们的内存消耗。我正在使用
Runtime.getRuntime().exec(externalToolCommand);
执行外部工具。但我不知道如何衡量外部工具的最大内存使用量。 为了更清楚,我将举例说明; 假设我有prism.exe,mrmc.exe和plasma.exe这三个可执行的外部工具。我想知道何时启动其中一个工具,例如prism.exe,它消耗了多少内存。我不需要测量我的Java应用程序内存消耗。我只需知道外部内存消耗。 感谢。
答案 0 :(得分:0)
我不知道确切的代码,但这是我能想到的。在Windows上,您可以从Java应用程序启动批处理脚本 p.bat ,然后从p.bat启动一个PowerShell脚本,说 q.ps1 ,现在您可以访问到PowerShell脚本。您可以运行一个进程监视工具(我不知道可能是perfmon ...)来测量它的一次内存消耗,将其记录在文本文件中。从脚本中终止进程。在Java应用程序中循环完成整个过程。最后,您已经获得了包含进程内存消耗n次的文件。
但要注意!它真的很贵,因为它涉及文件I / O,来回上下文切换,顶部流水线。
使用PowerShell,可能性无穷无尽。但我不是专家,所以请原谅,我无法为您编写确切的代码。这个答案需要您就所涉及的各个步骤进行大量研究。
答案 1 :(得分:-1)
尝试" jvisualvm",你可以在/bin/jvisualvm.exe找到它