关注
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、升级服务器配置/隔离部署,避免争用。
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
昨天 08:19
华南理工大学 C++ 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 实习进度记录 #
154522次浏览 1724人参与
# 我的求职精神状态 #
2933次浏览 79人参与
# Keep实习校招 #
48922次浏览 252人参与
# 京东美团大战,你怎么看? #
21263次浏览 191人参与
# 好未来求职进展汇总 #
6023次浏览 46人参与
# 大家每天通勤多久? #
30973次浏览 229人参与
# 平安产险科技中心求职汇总 #
244493次浏览 2613人参与
# 大城市找工作会更容易吗 #
16421次浏览 125人参与
# 金山WPS工作体验 #
20783次浏览 133人参与
# 提前批过来人的忠告 #
97677次浏览 1092人参与
# 签约有哪些注意事项 #
27092次浏览 227人参与
# 招银网络科技工作体验 #
18829次浏览 85人参与
# 生化环材还是天坑吗 #
30035次浏览 277人参与
# 4399求职进展汇总 #
17525次浏览 139人参与
# 中兴求职进展汇总 #
579602次浏览 2614人参与
# 华为存储OD事变 #
121677次浏览 681人参与
# 京东工作体验 #
12535次浏览 88人参与
# 生物制药/化工校招攻略 #
39968次浏览 275人参与
# 校招第一份工作你干了多久? #
66755次浏览 334人参与
# 腾讯音乐求职进展汇总 #
82136次浏览 450人参与
# 小红书求职进展汇总 #
49627次浏览 441人参与
# 宁德时代求职进展汇总 #
104943次浏览 622人参与