记一次线上事故内存泄漏:java.lang.OutOfMemoryError: unable to create new native thread

解决过程

一开始以为是内存不足 查看内存 发现空间足够
足够为什么不能创建线程?

ulimit -u 查看线程限制条数
1024

jps -l 查看应用id
top -Hp 3395 可以查看进程线程id总数及具体的线程id
pstree -p 3395 |wc -l 可以查看进程id 线程总数

jstack 3395 查看应用所有线程执行情况

将10进制转16进制

  • printf("%x", *str)
  • echo 'obase=16;17'|bc

修改配置文件
/etc/security/limits.conf

  •    - nproc      16384
    

虚拟机限制
Java虚拟机本身限制:
-Xms #intial java heap size
-Xmx #maximum java heap size
-Xss #the stack size for each thread

posted @ 2021-07-15 15:49  AlbertXe  阅读(52)  评论(0编辑  收藏  举报