gpt4 book ai didi

java - 获取使用 ProcessBuilder 启动的进程的内存使用情况和执行时间

转载 作者:太空宇宙 更新时间:2023-11-04 06:27:20 27 4
gpt4 key购买 nike

我正在 Java 代码执行器中工作。问题是如何控制本次执行的执行时间和内存使用情况。

我正在做这样的事情:

public ExecutionResult execute(List<String> args, String inputFile) throws CommandLineExecutorException {
try {
ProcessBuilder builder = new ProcessBuilder(args);
if (inputFile != null) {
builder.redirectInput(new File(inputFile));
}

final long startTime = System.currentTimeMillis();
Process process = builder.start();
process.waitFor();
final long endTime = System.currentTimeMillis();

int exitValue = process.exitValue();
InputStream inputStream = exitValue == 0 ? process.getInputStream() : process.getErrorStream();
String consoleOutput = readStream(inputStream);
return new ExecutionResult(exitValue, consoleOutput, (endTime - startTime));
} catch (IOException | InterruptedException ex) {
throw new CommandLineExecutorException(ex.getMessage());
}
}

我不确定这是否是控制子进程执行时间的最佳方法。为了内存,我仍在寻找最好的选择。

当我使用 php 时,我曾经使用脚本通过 Linux 命令来控制内存和时间,但我想知道是否有更好的方法在 java 中实现此目的。

最佳答案

为了监视子 Java 进程,您可以使用 Java JMX查询JVM进程的各种参数。请参阅this answer例如如何连接到远程 JVM 和 this one用于检索内存信息。

要监视非 Java 进程,您可以使用 SIGAR多平台 API。

关于java - 获取使用 ProcessBuilder 启动的进程的内存使用情况和执行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26616080/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com