0

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

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

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

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

4

1 回答 1

1

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

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

于 2010-09-18T16:48:44.240 回答