关注
74.
1、JVM 内部的应用程序请求创建一个新的 Java 线程;
2、JVM native 方法代理了该次请求,并向操作系统请求创建一个 native 线程;
3、操作系统尝试创建一个新的 native 线程,并为其分配内存;
4、如果操作系统的虚拟内存已耗尽,或是受到 32 位进程的地址空间限制,操作系统就会拒绝本次 native 内存分配;
5、JVM 将抛出 java.lang.OutOfMemoryError:Unableto createnewnativethread 错误。
解决方案
1、升级配置,为机器提供更多的内存;
2、降低 Java Heap Space 大小;
3、修复应用程序的线程泄漏问题;
4、限制线程池大小;
5、使用 -Xss 参数减少线程栈的大小;
6、调高 OS 层面的线程最大数:执行 ulimia-a 查看最大线程数限制,使用 ulimit-u xxx 调整最大线程数限制。
ulimit -a .... 省略部分内容 ..... max user processes (-u) 16384
6、Out of swap space?
该错误表示所有可用的虚拟内存已被耗尽。虚拟内存(Virtual Memory)由物理内存(Physical Memory)和交换空间(Swap Space)两部分组成。当运行时程序请求的虚拟内存溢出时就会报 Outof swap space? 错误。
原因分析
该错误出现的常见原因包括以下几类:
1、地址空间不足;
2、物理内存已耗光;
3、应用程序的本地内存泄漏(native leak),例如不断申请本地内存,却不释放。
4、执行 jmap-histo:live<pid> 命令,强制执行 Full GC;如果几次执行后内存明显下降,则基本确认为 Direct ByteBuffer 问题。
解决方案
根据错误原因可以采取如下解决方案:
1、升级地址空间为 64 bit;
2、使用 Arthas 检查是否为 Inflater/Deflater 解压缩问题,如果是,则显式调用 end 方法。
3、Direct ByteBuffer 问题可以通过启动参数 -XX:MaxDirectMemorySize 调低阈值。
4、升级服务器配置/隔离部署,避免争用。
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# AI面会问哪些问题? #
19229次浏览 391人参与
# 投递几十家公司,到现在0offer,大家都一样吗 #
338050次浏览 2142人参与
# 米连集团26产品管培生项目 #
12474次浏览 284人参与
# 你的实习产出是真实的还是包装的? #
16367次浏览 307人参与
# 蔚来求职进展汇总 #
116969次浏览 794人参与
# 一张图晒出你司的标语 #
2999次浏览 58人参与
# 开放七大实习专项,百度暑期实习值得冲吗 #
12027次浏览 177人参与
# 找AI工作可以去哪些公司? #
5392次浏览 130人参与
# 从事AI岗需要掌握哪些技术栈? #
5568次浏览 171人参与
# 你做过最难的笔试是哪家公司 #
22891次浏览 141人参与
# 春招至今,你的战绩如何? #
51822次浏览 472人参与
# 沪漂/北漂你觉得哪个更苦? #
7949次浏览 169人参与
# 聊聊这家公司值得去吗 #
914235次浏览 4736人参与
# 长得好看会提高面试通过率吗? #
19655次浏览 229人参与
# AI时代,哪个岗位还有“活路” #
9078次浏览 285人参与
# HR最不可信的一句话是__ #
4704次浏览 90人参与
# 阿里笔试 #
171377次浏览 1246人参与
# 春招你拿到offer了吗 #
825951次浏览 9967人参与
# 学历对求职的影响 #
659715次浏览 4226人参与
# 快手年终开大包 #
13210次浏览 101人参与
# 实习的你做了哪些离谱的工作 #
38684次浏览 253人参与
# 你的秋招白月光和意难平公司 #
93161次浏览 343人参与

查看7道真题和解析