亦论一次OutOfMemoryError的定位与解错
程序员文章站
2022-03-08 20:16:28
...
在进行一次通讯模块server-client端稳定性测试期间,报出OutOfMemoryError异常,
//outofmemeryerror
并且shell无法登录测试用户,通过root用户查看gc日志,堆内存正常,感觉很怪异,找了一圈书,发现都定位到线程太多,占用内存过多导致,
//top
//gc
由于自身对jvm内存分配还是不理解,再次查看jvm内存各个区段定义,发现原来栈帧是不占用堆内存的,然后问题明确,实际是线程过多,导致所有线程耗尽机器内存,再创建新线程时,无法申请到新内存所致,减小-XSS,减小线程数,(原来1w个,减少到2000) 问题解决
20170330 补充 或者减小堆内存
//outofmemeryerror
并且shell无法登录测试用户,通过root用户查看gc日志,堆内存正常,感觉很怪异,找了一圈书,发现都定位到线程太多,占用内存过多导致,
//top
//gc
由于自身对jvm内存分配还是不理解,再次查看jvm内存各个区段定义,发现原来栈帧是不占用堆内存的,然后问题明确,实际是线程过多,导致所有线程耗尽机器内存,再创建新线程时,无法申请到新内存所致,减小-XSS,减小线程数,(原来1w个,减少到2000) 问题解决
20170330 补充 或者减小堆内存
下一篇: 监视Rails进程内存泄漏的技巧