Unable to create new native thread
本文可转载演绎,但需要注明原作者和本文链接。
“Java.lang.OutOfMemoryError: Unable to create new native thread ”表示Java应用不能继续创建本地线程。
背景知识
由于Java本身支持多线程环境,Java的线程和本地线程是一一对应的。
根据提示“Java.lang.OutOfMemoryError: Unable to create new native thread ”可能会有误解。
引起原因
首先是JVM发起创建一个新的线程。然后JVM调用native代码创建本地线程。
系统在创建本地线程的时候,由于本地没有足够的memory或者达到本地线程数限制数(Linux查看本地限制,参考下面查看本地线程数限制),就会抛出“Java.lang.OutOfMemoryError: Unable to create new native thread ”这个异常。
查看本地线程数限制
$ ulimit -a
在其中找到max user processes这个属性对应的值,就是每个用户的进程数限制。
这个数不要开的太大,如果开到2W以上还有问题,就应该排查应用自身的逻辑了。
实践
TODO next day.