亦论一次OutOfMemoryError的定位与解错

在进行一次通讯模块server-client端稳定性测试期间,报出OutOfMemoryError异常,
//outofmemeryerror
[img]http://dl2.iteye.com/upload/attachment/0120/9306/543fafd5-ff0d-34bf-83b1-2288e52650ce.png[/img]
并且shell无法登录测试用户,通过root用户查看gc日志,堆内存正常,感觉很怪异,找了一圈书,发现都定位到线程太多,占用内存过多导致,
//top
[img]http://dl2.iteye.com/upload/attachment/0120/9333/fc90a52f-f1e2-3057-aac4-c8e635ec2921.png[/img]
//gc
[img]http://dl2.iteye.com/upload/attachment/0120/9323/ea16c56d-a157-3dc9-a05c-85e324f3e82a.png[/img]
由于自身对jvm内存分配还是不理解,再次查看jvm内存各个区段定义,发现原来栈帧是不占用堆内存的,然后问题明确,实际是线程过多,导致所有线程耗尽机器内存,再创建新线程时,无法申请到新内存所致,减小-XSS,减小线程数,(原来1w个,减少到2000) 问题解决
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值