运行Mac终端命令以调整JVM内存的Java代码

运行Mac终端命令以调整JVM内存的Java代码,java,jvm,Java,Jvm,我正在使用JavaFX2.2.3和JDK1.7.0_09开发一个应用程序。该应用程序将在Windows和Mac Osx上运行。 问题是我记性不好。 我知道-Xms和-Xmx用于调整JVM内存。但要求是我们必须使用java代码设置JVM内存,因为这是一个桌面应用程序,所以我们不能在每个系统上调整JVM 现在我为windows找到了一个解决方案 proc=Runtime.getRuntime().exec(“cmd.exe/cjava-Xms250m-Xmx1024m-jar\”applicatio

我正在使用JavaFX2.2.3和JDK1.7.0_09开发一个应用程序。该应用程序将在Windows和Mac Osx上运行。 问题是我记性不好。 我知道-Xms和-Xmx用于调整JVM内存。但要求是我们必须使用java代码设置JVM内存,因为这是一个桌面应用程序,所以我们不能在每个系统上调整JVM

现在我为windows找到了一个解决方案

proc=Runtime.getRuntime().exec(“cmd.exe/cjava-Xms250m-Xmx1024m-jar\”application.jar\“/n”)

通过使用这段代码,我可以在启动应用程序jar之前增加JVM内存。 但这是一个仅适用于Windows的解决方案


任何人都能说出类似的Mac代码。

首先,您需要找到java的安装位置。苹果公司的这份文件解释了如何做到这一点-

字符串JAVA=

proc=Runtime.getRuntime().exec(JAVA+“-Xms250m-Xmx1024m-jar”application.jar”)

假设Java位于'/usr/bin/Java',然后:

proc=Runtime.getRuntime().exec(“/usr/bin/java-Xms250m-Xmx1024m-jarapplication.jar”)

请注意,如果需要从“proc”捕获输出,则可以执行以下操作:

DataInputStream in = new DataInputStream(proc.getInputStream());
while ((ls_str = ls_in.readLine()) != null) {
  // Do something with the output from proc
  System.out.println(ls_str);
}

您不能为已经运行的JVM增加内存。标准方法是提供添加JVM参数的启动脚本。或者,如果您使用webstart,我认为可以在jnlp文件中配置堆大小。

如果我正确阅读了问题,他不会试图增加正在运行的JVM的内存。他正在从wi启动另一个JVM精简一个运行中的JVM-这样会产生一个单独的过程。是的,如果我使用Jnlp或web start,一切都正常,但应用程序是一个桌面应用程序,我们需要为这两个操作系统创建安装程序,我们只需使用Jar文件。如果你启动了一个新的JVM,为什么不直接为Xmx传递正确的值?如何启动新的JVM?是的如果我使用Jnlp或web start,一切正常,但应用程序是桌面应用程序,我们需要为这两个操作系统创建安装程序,我们只需要使用Jar文件。因此,我创建了一个不同的Jar,它检查堆大小并执行命令以增加JVM内存,然后运行实际的Jar。因此,我认为如果我们运行逗号nd像Java-Xms250m-Xmx1024m-jar Application.jar一样,带有针对windows的Java代码的东西也必须是针对Mac的。我不知道你的安装程序是如何工作的,但是难道不可能在windows上创建一个指向Java可执行文件并填充所有必要启动参数的桌面快捷方式吗?对于非常小的我可以在mac上工作(但我这里没有,所以我不能尝试)。我尝试过,但没有成功。我也尝试过下面这些方法,但没有成功Runtime.getRuntime().exec(“Terminal java-Xms250m-Xmx1024m-jar\”Application.jar\“/n”);proc=Runtime.getRuntime().exec(“java-Xms250m-Xmx1024m-jar\”Application.jar\“/n”);proc=Runtime.getRuntime().exec(“/usr/bin/open-a Terminal java-Xms250m-Xmx1024m-jar\”Application.jar\”/n”);如果我在应用程序的文件夹路径之间没有任何空间,它就可以工作。jar您需要转义这些空间。您能给出一个您尝试使用的文件夹路径的示例吗?