2013-12-12 147 views
1

我有一個Java應用程序,這是拋出Java堆大小內存錯誤。我的應用程序是關於將文件轉換爲.csv格式並將其加載到數據庫中。當文件內容少時,我的應用程序運行良好。但是當我有成千上萬的記錄時,我正在獲取堆大小的內存。當使用InputStream,OutputStream,BufferedWriter等類時,會發生內存泄漏的所有可能性,請幫助我解決此堆大小內存錯誤。我堅持了一個星期。下面給出的是我得到的堆大小錯誤Java堆大小內存

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

+1

你能提供你的應用程序的一些代碼? – hveiga

回答

1

當您運行該文件時,您需要將-Xmx ##添加到命令行。

java -Xmx4G 

會給你一個4 Gb的JVM可用。

編輯:如果可能的話,你應該在一個時間加載一個有點像@Oleg提及。

+0

我很抱歉,我不清楚增加堆大小的內存。我的問題是,每當我運行應用程序,我必須增加堆大小,然後用上面的代碼運行應用程序? – user1929839

0

我建議你增加堆大小,您可以在命令行中使用java -Xmx2048m

現在您將擁有高達2GB的內存。

按照此鏈接more

4

所以,你正在閱讀的整個文件到內存中,然後刷新到數據庫。

而不是做你需要讀取文件塊到內存中,並刷新到數據庫中。

沒有代碼就無法給出更詳細的答案。

+0

在將文件轉換爲.csv格式時,我將其作爲一個整體進行,但將記錄上傳到數據庫時,我並未將整個記錄加載到數據庫中。我一批一批地加載它。 – user1929839

0

您可以增加堆大小。

如果你可以分享你的代碼,我可以告訴你,有什麼辦法可以減少資源利用率