Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当进程达到一定内存大小时,在Linux中重新启动服务_Java_Linux_Tomcat_Heap Memory - Fatal编程技术网

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

Java 当进程达到一定内存大小时,在Linux中重新启动服务,java,linux,tomcat,heap-memory,Java,Linux,Tomcat,Heap Memory,我知道这不是一个好的解决方案,但是我们有一个在tomcat上运行的第三方产品的问题,它经常抛出堆空间错误。我想知道是否有一种方法可以监控某个进程所消耗的内存(不是使用PID而是进程名),如果超出了限制,则重新启动tomcat服务 我试着给它分配更多的内存,但这只会减慢进程 感谢记住ps在实际使用的内存(它显示分配的内存)方面本质上是不精确的,使用ps和jps的组合,您可能会得到一个“足够好”的度量: ps u -p `jps -v | grep "<yourname>" | awk

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

我试着给它分配更多的内存,但这只会减慢进程


感谢记住
ps
在实际使用的内存(它显示分配的内存)方面本质上是不精确的,使用
ps
jps
的组合,您可能会得到一个“足够好”的度量:

ps u -p `jps -v | grep "<yourname>" | awk '{print $1}'`
其中,
VSZ
(或虚拟大小)是您需要的数字


欢呼,< /P>如果OOM有一些规则,你可以考虑使用T.X代码> CRON/CODE >每一个T-X时间单位重新启动它。我们尝试过,但是没有模式,数百个用户在8小时内随机连接。它可以检测OOM异常并自动重新启动包装好的服务。但我想找到更好的解决办法。

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