我有一些可执行的工具。在我的Java应用程序中,我需要启动它们几百次,并根据不同的输入测量它们的内存消耗。我正在使用
Runtime.getRuntime().exec(externalToolCommand);执行外部工具。但是我不知道如何测量外部工具的最大内存使用率。为了更清楚,我将举例说明;假设我有prism.exe、mrmc.exe和plasma.exe,它们是三个可执行的外部工具。我想知道当我启动某个工具时,比如prism.exe,它消耗了多少内存。我不需要测量Java应用程序的内存消耗。我只需要知道外部内存的消耗。谢谢。
发布于 2015-06-11 13:08:32
我不知道确切的代码,但这是我能想到的。在Windows上,您可以从Java应用程序启动批处理脚本 p.bat ,并从p.bat启动powershell脚本q.ps1,现在您就可以访问powershell脚本了。你可以运行一个进程监控工具(我不知道可能是perfmon...)要测量它的一次内存消耗,请将其记录在文本文件中。从脚本中终止该进程。在Java应用程序中循环执行整个过程。最后,您得到了包含n次进程内存消耗的文件。
但是要当心!这是非常昂贵的,因为它涉及文件I/O,来回切换上下文,在顶部流水线。
有了powershell,可能性是无限的。但我不是powershell专家,所以对不起,我不能为你写确切的代码。这个答案需要你在涉及的各个步骤上进行大量的研究。
发布于 2015-06-11 12:53:01
试试"jvisualvm",你可以在/bin/jviewalvm.exe找到它。
https://stackoverflow.com/questions/30771537
复制相似问题