图片上传后台服务报内存溢出 Out Of Memory Java heap space
前端调用后台,后台调用阿里云OSS上传图片时,图片大小如果超过900Kb,前端就会报Http 500内部服务器的异常信息。但是上传小于900kb大小的图片就没有问题。
现象
-
前端:http 500异常。
-
后台服务日志:Out Of Memory : Java heap space
解决办法
-
通过上传图片大小能判断出,服务器是通的,也就是说是后台服务器的问题,或者OSS服务有限制大小或者带宽的问题。
-
通过查看后台日志,后台报堆内存溢出,异常信息如下。
org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.OutOfMemoryError: Java heap space
-
通过异常信息,暂时排除OSS服务的问题。
-
分析图片大小,正常情况下,一个900KB大小的图片信息,后台读取大概需要10M的内存。然后查看了当前进程启动内存,是128M,正常情况下128M是可以的。但是在多线程并发的情况下,其实这个内存很小。后来启动内存改为最大内存改为256M后,再测试通过。但是图片大小超过3M还是报内存溢出?
-
问题点:为什么超过图片大小超过3M又报内存溢出呢?请大家讨论区评论吧