生产环境异常:
java.lang.OutOfMemoryError: Java heap space
生产单台机器配置的内存较小4G , 压测200线程会崩,堆空间就不足了.
jmap -dump:live,format=b,file=heap.bin [pid]
先导出内存快照使用jvisualvm查看是那些实例占用了大部分资源
载入jmap导出的文件, 找到占用内存较大的类:
96.3%, 额.....
这是什么类, 很是面生:
不是代码中编写的类, 起码确定了不是代码问题.
搜索一番和Tomcat有关系. 看到一篇博文, 和max-http-header-size配置有关系, 项目配置文件中也找到了同样的配置,此配置导致每个线程会创建一个10M的inputbuffer和outputbuffer. 导致服务器内存加剧消耗,这条配置是本次项目更新后重新上线后添加的. 去掉后恢复正常.