Æva*_*ran 7 java linux garbage-collection
我需要一种能够从ubuntu上的linux控制台脚本触发完整GC的方法.我知道这是非常糟糕的做法,但没有太多的细节,这使我的服务器保持运行,这只是在我修复实际问题的1或2天,所以我不必在夜间醒来并执行通过jconsole或jvisualvm手动GC.
或者,我必须制作一个鼠标脚本,每3-4小时左右点击一次按钮,这更糟糕.
请帮忙.
And*_*yle 11
如果你可以让你的应用程序启动一个JMX服务器(我认为这是你使用jconsole/jvisualvm所暗示的),那么你可以gc通过命令行实用程序调用Memory MBean的操作.
首先,您需要某种命令行JMX客户端.我过去使用过这个用于简单的命令行调用,它运行正常.(编辑:事实上我刚才用它来测试以下命令,并在本地Tomcat进程上成功调用GC)
然后你需要找出命令来触发垃圾收集.我认为这应该可行(您当然需要根据需要更改主机/端口/凭据):
java -jar cmdline-jmxclient-X.X.jar - localhost:8081 java.lang:type=Memory gc
Run Code Online (Sandbox Code Playgroud)
最后,您可以通过cron或等效安排调用此命令.
瞧!
如果你有oracle jvm 1.7,你可以使用jcmd列出jvm PID,然后jcmd <pid> GC.run到GC.
jcmd <pid> help 将向您展示可用的其他命令.