概述如何从没有X11的Linux控制台触发手动Java GC
我需要一种方法能够从Ubuntu的linux控制台脚本触发完整的GC。 我知道这是非常糟糕的做法,但没有太多细节,这使得我的服务器运行,这只是意味着1或2天,而我解决实际问题,所以我不必在夜间醒来,执行通过jconsole或jvisualvm手动GC。
另外,我必须做一个鼠标脚本,每3-4个小时左右点击一次button,这更糟糕。
请帮忙。
当客户端调用CoCreateInstance并且意外closures时,Out-proc COM Server内存泄漏
挂起的JVM,“Jstack -F pID”只能修复
我怎样才能在multithreading环境中实现垃圾收集?
在CentOS中禁用UseGCOverheadlimit
监视Java垃圾收集时的cpu,RAM,I / O使用情况
windows和linux上的内存页面写入检测
什么时候由.NET进程分配的内存被释放回windows
GC暂停和杀死-Stop产生相同的行为?
Python程序吃RAM
使用WMI获取垃圾收集器指标
如果你可以让你的应用程序启动一个JMX服务器(我相信这是你使用jconsole / jvisualvm所隐含的),那么你可以通过命令行工具调用Memory MBean的gc *** 作。
首先,你需要一些命令行的JMX客户端。 我曾经使用过这个简单的命令行调用,它工作正常。 (编辑:实际上我刚刚用它来测试下面的命令,它在本地Tomcat进程上成功调用了GC)
那么你需要制定出触发垃圾回收的命令。 我认为这应该工作(你当然需要改变主机/端口/凭据适当):
java -jar cmdline-jmxclIEnt-XXjar – localhost:8081 java.lang:type=Memory gc
最后,你可以通过cron或者等价的方式调度这个命令。
瞧!
如果您有oracle jvm 1.7,则可以使用jcmd列出jvm PID,然后将jcmd <pID> GC.run GC。
jcmd <pID> help会告诉你什么其他命令可用。
jcmd <pID> GC.run
例:
jcmd 20350 GC.run
这不是不好的做法,即使对于由JVM执行的Java应用程序也是不可能的。 有一个gc()调用可用,但它只是提示JVM运行垃圾收集。 在控制台中,通常无法在运行时影响JVM。
有人问这个问题的windows平台,请参阅问题如何从windows命令行运行时请求JVM垃圾回收(而不是从代码)
您可以检查堆栈/堆大小(最小和最大)的JVM参数。 在这个领域你可以做很多的调整,但是大部分都是针对你正在使用的JVM。
针对大型应用程序的JVM性能调优
总结
以上是内存溢出为你收集整理的如何从没有X11的Linux控制台触发手动Java GC全部内容,希望文章能够帮你解决如何从没有X11的Linux控制台触发手动Java GC所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
请登录后查看评论内容