unable to create new native thread

 

nested exception is java.lang.OutOfMemoryError: unable to create new native thread

 

 

这个错误是因为无法再创建新线程导致的,原因可能是没有更多的空间用于创建线程,还有一个公式用来计算:

(MaxProcessMemory - JVMMemory - ReservedOsMemory) / (ThreadStackSize) = Number of threads

 

 

这其中各个参数的意思是:
  MaxProcessMemory:进程最大寻址空间。
  JVMMMEMORY:jvm的内存空间(堆+永久区)-Xmx大小 (应该是实际分配大小)
  ReservedOsMemory:操作系统预留内存
  ThreadStackSize:-Xss大小

 

Xss与线程个数

Xss越大,每个线程的大小就越大,占用的内存越多,能容纳的线程就越少。

Xss越小,则递归的深度越小,容易出现栈溢出 java.lang.StackOverflowError。

减少局部变量的声明,可以节省栈帧大小,增加调用深度。

posted @ 2020-09-24 09:47  mzjnumber1  阅读(1095)  评论(0编辑  收藏  举报