在您阅读本文之前,请告诉您,请不要回复此重复或查看此链接或其他链接。我知道,我已经检查了许多链接和建议,但仍然需要你看看这个。让故事简短:
ENV: java 32 bit 1.6 update 38 jboss 5.1。 GA 服务器上的RAM为8 GB JAVA_OPTS = -Xms256M -Xmx1024M
研究案例: 服务器的负载(Web服务调用)增加了,从那时起我们开始看到这一点。
服务器日志显示以下异常: 引起:java.lang.OutOfMemoryError:无法创建新的本机线程
有时候: 2014-10-03 10:33:45,200 ERROR [STDERR](AWT-Windows)java.lang.OutOfMemoryError:OutOfMemoryError
最近三天的观察:
OS内存性能监控: 提交内存缓慢增加
jvisualvm数据: 没有观察到堆空间问题,GC正常工作,所以我没有看到任何泄漏。 线程转储显示许多WAIT线程! 我在堆转储中跟踪了我们的应用程序包,并没有发现任何大问题(仍在调查)但是我认为我们没有正确管理线程。
jboss重启后的线程数从50到260个线程增加,即使在服务器上没有活动的空闲情况下也不会减少。这对我来说很奇怪。
堆使用量高达400 MB,小于最大1024 MV
现在我希望,真的希望有人可以指导我完成这个并帮助我解决它。我认为堆栈很小?或者我们的应用程序没有正确处理线程。
你能帮助我吗? 感谢。答案 0 :(得分:1)
这似乎是你创建了巨大的线程并且超出了线程限制(简而言之,你的进程可能缺少本机内存来创建额外的线程)。有关详细信息,请参阅http://java.dzone.com/articles/outofmemoryerror-unable-create。