我为REST产品目录创建了一个Java Spring Boot应用程序,它从远程数据库获取信息,我只能访问每天重建的物化视图。它有一个大图像长达5兆字节的字段。
当我读取此视图以搜索更新时,我将这些图像传递给我自己的系统文件(在我自己的数据库中注册文件名),但在此之前,我使用Thumbnailator插件调整两个版本的图像大小(拇指和全屏)每对不超过20千字节。
问题是在此过程中我收到了Java堆错误:
java.lang.OutOfMemoryError: Java heap space
我试图修复使用Slice类对视图记录进行分页(一次5条记录,一次转换1个for循环),但没有更好的结果,所以我搜索了一点,看到了这篇文章我在加载JAR文件时应该使用-Xmx6g
,但它也没有用。
似乎Java VM,Spring Framework,TomCat(或我的代码)没有正确地使用内存。
我想知道是否有一个标准的堆启动和最大值可以处理常规数据库和图像处理而不会崩溃;或者如果它是上述某个部分中的已知错误。