2014-09-01 123 views
1

我在尝试创建BufferedImage时遇到问题。我在租用的服务器上有这个问题,而不是在我的开发环境(我的电脑)上。java.lang.OutOfMemoryError:我尝试创建BufferedImage时的Java堆空间

我有一个表单上传图片。上传图片后,我将其保存到文件系统。 我立即保存它,因为根据你们有些人的说法,我可以从服务器内存中“释放”资源,因为我在我的文件系统上使用了映像,而不是对象Part来调整映像大小,控件等。我需要。

只要我尝试从大于2-3 mb的图像创建BufferedImage,就会出现该错误。

在执行这条线我的应用程序停止工作,我得到这个错误

BufferedImage immagineTemporaneaBufferizzata = ImageIO.read(new File...); 

我曾经在互联网上找到一个方法来检查服务器上的内存。这是我遇到的错误之前得到:

使用的内存:26 可用内存:30 总内存:57 最大内存:57

我应该增加堆内存?我试图在catalina.bat和catalina.sh上做到这一点,但我没有看到我的Max Memory中的更改。可能我做错了什么。在linux上增加堆大小的正确方法是什么?

+1

我无法找到阅读的ImageIO,它接受String作为参数的方法。 – mkrakhin 2014-09-01 10:50:49

+0

[增加Tomcat的内存设置] [1] [1]:http://stackoverflow.com/questions/12688778/increase-tomcat-memory-settings – 2014-09-01 11:01:52

+0

可能重复[如何处理的“java .lang.OutOfMemoryError:Java heap space“error(64MB heap size)](http://stackoverflow.com/questions/37335/how-to-deal-with-java-lang-outofmemoryerror-java-heap-space-error -64mb-hello) – Andremoniy 2014-09-01 11:06:46

回答

1

最大内存57 MB对于处理2-3 MB的图像的Java应用程序来说非常低。是的,如果可以的话,你一定要增加记忆。

澄清:图像大小2-3 MB。什么是2-3 MB?压缩图像的大小?如果是2-3 MB的JPG,那可能是一个大图像的恶魔(取决于质量)。例如。它甚至可能是640万像素的3200×2000像素的图像,并且具有3字节的RGB像素模型,它将是二进制数据在存储器中的图像。

关于增加tomcat的内存看到这些问题:

Dealing with "java.lang.OutOfMemoryError: PermGen space" error

Increase Tomcat memory settings

+0

感谢您的解释。我不熟悉图像大小调整,当我调整图像大小时,我不知道发生了什么。我检查了我正在上传的图像。它是4896x1890;这意味着,根据你所说的,我的网站正在处理一个27 mb的二进制流。现在我想知道Facebook这样的大型网站能够在同一时间处理上千张图片的上传。 – MDP 2014-09-03 08:18:56

相关问题