首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我在tomcat中得到了"Java HotSpot(TM) 64位服务器VM警告:异常java.lang.OutOfMemoryError发生调度信号SIGTERM到处理程序“错误

我在tomcat中得到了"Java HotSpot(TM) 64位服务器VM警告:异常java.lang.OutOfMemoryError发生调度信号SIGTERM到处理程序“错误
EN

Stack Overflow用户
提问于 2012-06-19 05:49:22
回答 3查看 14.3K关注 0票数 9

我在VPS上有tomcat应用程序,tomcat有时(大约每月一次)崩溃,catalina.out中有以下错误:

Java (TM)64位服务器VM警告:异常HotSpot java.lang.OutOfMemoryError发生,将信号SIGTERM调度到处理程序-- VM可能需要强制终止。

下面是有关我的配置的一些详细信息:

  • 副总裁: debian-5.0-x86_64
  • RAM: 2.5 gb,
  • 虚拟处理器:8
  • 硬盘:60 70硬盘- 70%免费
  • Tomcat7.0
  • java -version: java版本"1.6.0_18“OpenJDK运行时环境(IcedTea6 1.8.13) (6b18-1.8.13-0+挤压1) OpenJDK 64位服务器VM (Build14.0-b16,混合模式)
  • Java params:-Xms512m -Xmx1024m

我在服务器上也有Apache。

我用Munin监控服务器负载,它向我展示了内存和CPU的使用总是稳定的,在崩溃之前没有任何增加。

我还通过java.lang.Runtime类记录java内存的使用情况,这表明jvm总是使用max200Mb内存,崩溃前没有增加。崩溃前的最后一次日志是40秒前,使用的时间是:152 40。

我的web应用程序还运行6-7个线程,从不同的公共API中收集数据。当tomcat启动时,这些线程就会启动,并且它们总是以周期性的睡眠方式运行。

你能告诉我它为什么坠毁吗?我怎么才能找到原因?

EN

回答 3

Stack Overflow用户

发布于 2012-06-22 12:00:41

  • 从shell中运行top,查看进程占用了多少内存。
  • 检查机器中总的内存使用情况。可能是其他进程消耗了所有的内存,迫使Linux杀死JVM:像Mysql或Postgress这样的数据库可能会被怀疑。
  • 检查/var/log/messages在崩溃前后的时间段内是否有异常事件。
票数 0
EN

Stack Overflow用户

发布于 2017-08-07 10:52:51

您可以编辑service.bat或service.sh文件(可以在deistribution的bin文件夹中找到),并将以下两个jvm参数放入

代码语言:javascript
复制
XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=<PATH_TO_WRITE_DUMP>

PATH_TO_WRITE_DUMP应该具有必要的权限,一旦您获得了堆转储文件(在发生OutOfMemory问题时将生成),可以手动或通过一些第三方工具对其进行分析。您可以在jvisualvm中加载该文件并进行一些分析,或者您可以使用eclipse的内存分析插件,它非常有用,并给出了一些潜在的内存泄漏嫌疑人和控制树(即哪个对象主导了堆)--这可能是一个很好的起点。

票数 0
EN

Stack Overflow用户

发布于 2017-09-09 16:13:47

增加tomcat java启动内存,如:设置JAVA_OPTS=-server -Xms256m -Xmx512m

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11095094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档