1

在使用JOpenDoc API處理ODS工作表時,爲Java堆空間獲取OutOfMemoryError。處理表包含6000個記錄。根據JProfiler,如果記錄更多,消耗的內存空間就會變得更多。如何擺脫這個錯誤,而不增加-X參數的JVM大小。這是我的java代碼,這是造成內存不足。如何克服java堆空間的OutOfMemoryError?

SpreadSheet spreadSheet=SpreadSheet.createFromFile(new File("document.ods")); //memory-35 MB 
Sheet sheet1=spreadSheet.getSheet(1); // consumed memory - 47 MB 
Sheet sheet2=spreadSheet.getSheet(2); // consumed memory - 59 MB 
Sheet sheet3=spreadSheet.getSheet(3); // outofmemory error since the default size is 64 MB 
+0

是否有避免使用-X標誌的原因? – Jason 2012-02-29 03:03:14

+3

恩,停止使用所有的內存?如果您拒絕將可用於JVM的內存增加到類似需要的內存,那麼這是您的另一種選擇。一次只能處理一張「表格」。 – 2012-02-29 03:03:17

+0

@Jason:是的,因爲表格記錄可能會逐漸增加。在這種情況下,沒有固定的堆內存要分配。正如我告訴你,如果記錄數更多,堆內存增加更多。 – hemanth 2012-02-29 03:11:20

回答

2

您需要使用-Xmx增加內存或減少內存使用量。例如,你是否需要一次裝載3張紙?如果沒有,釋放對它的引用(例如sheet1 = null),垃圾收集器將處理它。

相關問題