2014-09-01 130 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

相關問題