BaiFan
文章目录
  1. 1. 背景知识
    1. 1.1. 引起原因
    2. 1.2. 查看本地线程数限制
  2. 2. 实践

“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.

文章目录
  1. 1. 背景知识
    1. 1.1. 引起原因
    2. 1.2. 查看本地线程数限制
  2. 2. 实践