前言:项目将要上线之际,后台管理交给乙方添加数据+上传资料等等,前台正微调中,在快要下班之际,乙方突然反应传一个300MB的视频没传上去,报错了(这儿就不要吐槽为啥用web传大视频了,已经被吐槽过了)。然后上服务器查看日志,错误信息是OutOfMemoryError :Java heap space。 项目是使用Spring boot搭建,文件上传到服务器,服务器再上传到七牛云。
为了让服务先能正常运行,给了参数-Xmx1g -Xms1g -Xmn300M。结果传个300M的还是因为OOM挂掉了。这儿就有点懵逼了,然后重新运行给了参数-Xmx2g -Xms2g -Xmn500M。这次总算没有挂掉。然后自己试了一个440M的没有问题,但过了十几分钟突然timeout。百度了下,改了server的connection到30min,终于可以正常运行。但事情还没有结束,带电脑回家分析产生OOM的原因。
回到家,首先在最开始参数的基础上加了+XX:+PrintGCDetails参数,查看下GC回收情况。
访问正常网页GC日志显示如下: