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