gpt4 book ai didi

java - 从另一个 JVM 中启动 JVM - 避免代码重复的坏主意?

转载 作者:行者123 更新时间:2023-12-01 16:01:34 24 4
gpt4 key购买 nike

我有一个 Java 控制台应用程序,它是从 Windows 中的批处理脚本和 Linux 中的 shell 脚本启动的。在这两种情况下,任何命令行参数(很复杂)都会简单地传递到 java 应用程序中,该应用程序使用 Apache Commons CLI 来解释它们。

现在我想允许用户为程序分配额外的内存。最简单的方法可能是为此提供一个附加参数(例如 -m 1000),但也有缺点。批处理和 shell 脚本现在都需要解释命令行,以便它们可以提取内存参数并将其用作 JVM 的 -Xmx 参数。这实际上意味着在 3 个地方(batch/shell/java)满足参数解析的全部复杂性。

唯一想到的其他方法是让脚本调用虚拟 Java 应用程序,该应用程序使用现有的解析逻辑来查找新参数,然后派生另一个 JVM 来运行主应用程序,使用正确的内存上限(使用 Runtime.exec())。这可以解决代码重复问题。

我的问题是 - 这对任何人来说都是一个坏主意吗?也许有些问题我没有考虑到。

最佳答案

除非你需要非常高的性能,我认为还是可以的。在工作中,我们对类似的问题使用相同的方法:用户双击应用程序的jar文件;然后这个 jar 文件启动另一个具有适当内存量的进程(通常是 -Xmx512m)。

需要考虑的事情:用户可以将其他 jar 文件添加到类路径中吗?用户可以设置不同的JVM来使用吗?如果是的话,可能会很棘手。您还应该确保该过程结束。您可能需要重定向输入流、输出流和错误流,可能需要使用单独的线程。

关于java - 从另一个 JVM 中启动 JVM - 避免代码重复的坏主意?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3742406/

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