如何从外部请求Java垃圾回收,从JAR(使用Windows BAT)启动程序?
System.gc()
但是…当我从命令行/蝙蝠运行jar时,java控制台似乎并没有打开。 简单的search引擎找不到帮助,也许有人在这里?
您可以使用jconsole连接到本地运行的JVM – 这在GUI上提供了“Perform GC”按钮。
在启动Java进程时,您需要指定-Dcom.sun.management.jmxremote 。
如果你使用最新的Java 6,你也有jvisualvm补充和扩展jconsole的功能。 他们都是非常有用的工具。
对于纯粹的命令行方式,您应该可以使用jcmd
。 我相信自从至少Java 1.7以来,jcmd已经成为标准JDK安装的一部分。 该命令将是这样的:
jcmd <process-id> GC.run
您可以获得jcmd为特定进程提供的诊断命令列表,如下所示:
jcmd <process-id> help
您通常不应有任何理由强制垃圾收集。 这样做,弄乱了垃圾收集器算法(主要是他们的性能)。 垃圾收集的同时,也会减慢程序的速度。 如果有内存问题,你应该使用内存跟踪工具来找出引用被保存在哪里? (听众是否注册?)
正如在其他的答案,你可以使用jconsole或jvisualvm。 您也可以使用jmx以编程方式执行它。