我知道这不是一个好的解决方案,但是我们遇到了在tomcat上运行并且经常抛出堆空间错误的第三方产品的问题。我想知道是否有办法监视某个进程所消耗的内存(不使用PID但是进程名称),如果超出限制,则重启tomcat服务。
我尝试为其分配更多内存,但这只会减慢过程。
由于
答案 0 :(得分:1)
记住ps
在实际使用内存(它显示已分配的内存)方面具有内在的准确性,你可能会得到一个“足够好”的措施使用ps
和jps
的组合:
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
(或虚拟大小)是您需要的数字。
干杯,