当进程达到特定内存大小时,在Linux中重新启动服务

时间:2014-02-13 12:59:09

标签: java linux tomcat heap-memory

我知道这不是一个好的解决方案,但是我们遇到了在tomcat上运行并且经常抛出堆空间错误的第三方产品的问题。我想知道是否有办法监视某个进程所消耗的内存(不使用PID但是进程名称),如果超出限制,则重启tomcat服务。

我尝试为其分配更多内存,但这只会减慢过程。

由于

1 个答案:

答案 0 :(得分:1)

记住ps在实际使用内存(它显示已分配的内存)方面具有内在的准确性,你可能会得到一个“足够好”的措施使用psjps的组合:

ps u -p `jps -v | grep "<yourname>" | awk '{print $1}'`

我假设通过“进程名称”表示可识别特定java实例的内容。

这将提供类似

的内容
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      6816  0.6  7.1 1454376 281436 pts/2  Sl+  Feb03 102:20 /usr/bin/java -Xmx1024M -Xms512M -jar /opt/minecraft/minecraft_serv

其中VSZ(或虚拟大小)是您需要的数字。

干杯,