当前位置: 首页 > 面试题库 >

重新启动具有更大堆空间的JVM

能文华
2023-03-14
问题内容

我希望能够执行.Jar文件,并且如果堆空间设置得不够大,它应该使用相同的.Jar文件启动一个新的JVM,但设置更大的堆空间,然后关闭第一个JVM和.Jar。

我尝试使用ProcessBuilder,但无法正常工作。

它必须跨平台工作。

-奥妮


问题答案:

我找到了解决方案,它可以跨平台工作。要从代码重新启动JVM,请使用以下命令。这个答案来自我在这里搜索数小时后发现的另一个问题。如果需要,可以在调用此方法后,在System.exit(0)之后跟随它终止启动新进程的JVM。

public static void startSecondJVM() throws Exception {
    String separator = System.getProperty("file.separator");
    String classpath = System.getProperty("java.class.path");
    String path = System.getProperty("java.home")
            + separator + "bin" + separator + "java";
    ProcessBuilder processBuilder = 
            new ProcessBuilder(path, "-Xmx1024m", "-cp",
            classpath, 
            Main.class.getName());
    Process process = processBuilder.start();
}


 类似资料:
  • 当我使用spark运行一个模型训练管道时,我产生了上面的错误 oom错误由org.apache.spark.util.Collection.ExternalSorter.WritePartitionedFile(ExternalSorter.Scala:706)触发(在堆栈跟踪的底部) 日志: 任何建议都会很棒:)

  • 问题内容: 我编写了一个脚本,该脚本可以通过从网站上下载最新版本并覆盖正在运行的脚本来保持最新状态。 我不确定更新脚本后重新启动脚本的最佳方法是什么。 有任何想法吗? 我真的不想要一个单独的更新脚本。哦,它也必须在两个linux / windows上都可以工作。 问题答案: 在Linux或任何其他形式的Unix中,os.execl和它的朋友是一个不错的选择- 您只需要重新执行sys.executa

  • 我有一个文件,大小,我试图在Windows10上运行它,在DBeaver程序上使用RAM,我得到错误 我尝试了许多解决办法,但都不起作用。、、对我都不起作用。

  • 问题内容: 我想增加詹金斯的可用堆空间。但是由于它是作为服务安装的,所以我不知道该怎么做。 问题答案: 在您的Jenkins安装目录中,有一个jenkins.xml,您可以在其中设置各种选项。将具有所需大小的参数-Xmx添加到arguments- tag中(如果已经存在,则增加大小)。

  • 问题内容: 只是面临奇怪的问题。当我键入 我有 。 这个命令工作正常 如果我将xms,xmx更改为128m,则会再次出现错误。 使用命令,我可以看到,我有超过192 MB的空闲空间,那么为什么我仍然收到此错误? 谢谢 问题答案: 您尝试在其上运行此计算机的机器似乎只有256 MB内存。 也许JVM试图分配一个大的,连续的64 MB内存块。可用的192 MB可能会分成较小的碎片,因此不会有连续的64

  • 问题内容: 有什么方法可以重新启动JVM?如in中,实际上不退出,而是关闭并重新加载所有类,然后从顶部运行main? 问题答案: 最好的选择可能是在一个循环中运行java解释器,然后退出。例如: 如果您希望完全重新引导或关闭,可以测试退出状态: 在Java程序中,可以使用System.exit(0)指示要“重新引导”,而可以使用System.exit(1)指示要停止并保持停止。