2016-12-14 3 views
0

Я пытаюсь прочитать простой 8-мегабайтный файл с кучей памяти 2G с использованием Apache POI. Но я получаю следующее исключение.Получение java.lang.OutOfMemoryError: превышение верхнего предела GC при чтении файла excel

14:53:20,437 ERROR [stderr] (server-timer) java.lang.OutOfMemoryError: GC overhead limit exceeded 
14:53:20,438 ERROR [stderr] (server-timer)  at java.util.HashMap.newKeyIterator(HashMap.java:968) 
14:53:20,439 ERROR [stderr] (server-timer)  at java.util.HashMap$KeySet.iterator(HashMap.java:1002) 
14:53:20,439 ERROR [stderr] (server-timer)  at java.util.HashSet.iterator(HashSet.java:170) 
14:53:20,440 ERROR [stderr] (server-timer)  at java.util.Collections$SynchronizedCollection.iterator(Collections.java:1632) 
14:53:20,441 ERROR [stderr] (server-timer)  at org.jboss.sun.net.httpserver.ServerImpl$ServerTimerTask.run(ServerImpl.java:844) 
14:53:20,441 ERROR [stderr] (server-timer)  at java.util.TimerThread.mainLoop(Timer.java:555) 
14:53:20,442 ERROR [stderr] (server-timer)  at java.util.TimerThread.run(Timer.java:505) 
14:53:20,442 ERROR [stderr] (DataImportFeedEngine-1) java.lang.OutOfMemoryError: GC overhead limit exceeded 
14:53:20,443 ERROR [stderr] (ContainerBackgroundProcessor[StandardEngine[jboss.web]]) java.lang.OutOfMemoryError: GC overhead limit exceeded 
14:53:20,444 ERROR [stderr] (cluster-ClusterId{value='58510c2638359c3ff495fb11', description='null'}-localhost:27017) java.lang.OutOfMemoryError: GC overhead limit exceeded 
14:53:20,445 ERROR [stderr] (pool-3-thread-1) java.lang.OutOfMemoryError: GC overhead limit exceeded 
14:53:20,446 ERROR [stderr] (pool-3-thread-1) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.addConditionWaiter(AbstractQueuedSynchronizer.java:1857) 
14:53:20,447 ERROR [stderr] (pool-3-thread-1) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2073) 
14:53:20,448 ERROR [stderr] (pool-3-thread-1) at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1090) 
14:53:20,448 ERROR [stderr] (pool-3-thread-1) at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:807) 
14:53:20,449 ERROR [stderr] (pool-3-thread-1) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068) 
14:53:20,452 ERROR [stderr] (pool-3-thread-1) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) 
14:53:20,453 ERROR [stderr] (pool-3-thread-1) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
14:53:20,453 ERROR [stderr] (pool-3-thread-1) at java.lang.Thread.run(Thread.java:745) 
14:53:20,454 ERROR [stderr] (pool-2-thread-1) java.lang.OutOfMemoryError: GC overhead limit exceeded 
14:53:20,455 ERROR [stderr] (pool-4-thread-1) java.lang.OutOfMemoryError: GC overhead limit exceeded 

Ниже приведен код, который генерирует вопрос:

FileInputStream file = new FileInputStream(new File(srcFileName)); 
    XSSFWorkbook workbook = new XSSFWorkbook(file); 
    XSSFSheet sheet = workbook.getSheetAt(0); 

Я не думаю, что это много памяти требуется для этой операции, я знаю, что есть несколько вопросов, заданных на этом, но я старался много вещей?

+0

Для низкого чтения памяти .xlsx файлов, пожалуйста, обратитесь к http://stackoverflow.com/questions/12513981/read-data-from-xlsx-with-apache-pois-sxssfsheet – diufanman

+1

Прочитайте документы и следуйте http://poi.apache.org/spreadsheet/how-to.html#xssf_sax_api? – Gagravarr

ответ

Смежные вопросы