我需要一种能够从 ubuntu 上的 linux 控制台脚本触发完整 GC 的方法。 我知道这是非常糟糕的做法,但无需过多详细说明,这会使我的服务器保持运行状态,这仅意味着在我解决实际问题时持续 1 或 2 天,因此我不必在晚上醒来并执行通过 jconsole 或 jvisualvm 手动 GC。
或者,我必须制作一个鼠标脚本,每 3-4 小时左右点击一次按钮,这更糟糕。
请帮忙。
最佳答案
如果您可以让您的应用程序启动一个 JMX 服务器(我相信这暗示了您对 jconsole/jvisualvm 的使用),那么您可以通过命令行实用程序调用 Memory MBean 的 gc
操作。
首先,您需要某种命令行 JMX 客户端。我用过 this one过去用于简单的命令行调用并且运行良好。 (编辑:其实我刚才用它来测试下面的命令,它在本地Tomcat进程上成功调用了GC)
然后您需要计算出触发垃圾回收的命令。我认为这应该可行(您当然需要根据需要更改主机/端口/凭据):
java -jar cmdline-jmxclient-X.X.jar - localhost:8081 java.lang:type=Memory gc
最后,您可以通过 cron
或等效程序安排调用此命令。
瞧!
关于java - 如何在没有 X11 的情况下从 Linux 控制台触发手动 Java GC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4155696/