如何请求 JVM 垃圾回收(不是从代码)从 Windows 命令行运行时

我怎么能在外部请求Java垃圾回收,从JAR(使用Windows BAT)启动程序?

  • 从Java代码中,我可以用它来做到这一点System.gc()
  • 当运行JNLP发行版时,我从控制面板/ Java / ...此 Java 控制台提供手动垃圾回收。

但。。。当我从命令行/bat运行jar时,java控制台似乎没有打开。无法通过简短的谷歌搜索找到帮助,也许有人在这里?


答案 1

对于纯命令行方法,您应该能够使用 jcmd。我相信jcmd至少从Java 1.7开始就是标准JDK安装的一部分。该命令将如下所示:

jcmd <process-id> GC.run

您可以获取 jcmd 为特定进程提供的可用诊断命令的列表,如下所示:

jcmd <process-id> help

答案 2

您可以使用 jconsole 连接到本地运行的 JVM - 这在 GUI 上提供了一个“执行 GC”按钮。

您需要在启动 Java 进程时指定 -Dcom.sun.management.jmxremote