java.lang.OutOfMemoryError: unable to create new native thread

时间:2021-11-16 17:34:24

线上系统出了这个问题,java命令不好用,整个Java环境奔溃。

 

之前怀疑是Tomcat出现资源泄漏,后来:

lsof -p PID

ps -eLF | grep PID

检查了线程数和文件数没什么问题。

 

在ulimit看看系统的设置也没啥问题,机器120G内存,显然不能是内存溢出,当然异常信息也说明是线程不能创建了,猜测:

1、线程多了

2、线程堆栈设置大了(这个不可能,因为根本没用-Xss)

 

于是ps -eLF各个进程,找到一个进程,居然30000个线程,疯狂吧。

 

因为机器是6U,120G内存,所以这个问题得持续3天才能发现。

 

找到进程就好办了,看看源代码,原来是某位仁兄,线程池做局部变量,用完不关,我了个去。。这也太。。。

 

http://www.blogjava.net/ldd600/archive/2009/09/25/296397.html

http://www.byywee.com/page/M0/S606/606163.html

http://book.51cto.com/art/201205/339033.htm