当前位置: 首页 > 知识库问答 >
问题:

获取java。lang.OutOfMemoryError:读取excel文件时超出了GC开销限制

顾昊穹
2023-03-14

我正在尝试使用Apache POI读取一个具有2G堆内存的简单8MB文件。但我正在摆脱记忆错误。

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);

我不认为这个操作需要这么多内存,我知道有很多问题要问,但我尝试了很多事情?

共有1个答案

邓兴为
2023-03-14

使用https://github.com/monitorjbl/excel-streaming-reader它解决了我使用大型excel文件的问题

参考

如何使用Apache POI加载大型xlsx文件?

 类似资料:
  • 我使用Spark\u apply在Spark中遇到GC开销限制超出错误。以下是我的规格: SparkyR v0.6.2 Spark v2.1.0 4个工人,8核和29G内存 闭包每次从Cassandra提取一行数据。总共大约有20万行。这个过程运行了大约一个半小时,然后给了我这个内存错误。 我试过spark。驾驶员内存本应增加堆大小,但它不起作用。 有什么想法吗?下面的用法

  • 我试图用火花处理10GB的数据,它给了我这个错误, Java语言lang.OutOfMemoryError:超出GC开销限制 笔记本电脑配置为:4CPU,8个逻辑内核,8GB RAM 提交Spark作业时进行Spark配置。 在网上搜索了这个错误后,我有几个问题 如果回答,那将是一个很大的帮助。 1) Spark是内存计算引擎,用于处理10 gb的数据,系统应具有10 gb的RAM。Spark将1

  • 当我执行我的测试时,我得到了这个错误消息: 我知道什么是,但GC开销限制意味着什么?我怎样才能解决这个问题?

  • 当我运行我的8-puzzle程序时,我不断得到“超出GC开销限制”。我曾尝试向JVM添加更多内存,但没有任何帮助。 这是问题所在的方法: start是我从文件. txt中读取的字符串。它可以解决一些问题,但有些问题会产生此错误。

  • 当我尝试运行TestRun时,我遇到了以下错误。我试了很多,但找不到。帮帮我!我得到了内存不足错误Java堆。运行以下代码也需要更多的时间来运行,最后它显示错误,如下所示。如何使这段代码正确?调试这对我来说非常困难。线程“主”中的异常java.lang.OutOfMemoryError:Java堆空间。 班级总和: 类测试运行:

  • 我尝试从hdfs读取现有的拼花文件使用火花sql为我的POC,但击中OOM错误。 我需要读取给定分区日期的所有分区文件。分区如下:日期/file_dir_id 日期文件夹下有1200个子文件夹 拼花文件夹结构 日期: 文件\u dir\u 1 文件\u 1。拼花地板 文件2。拼花地板 文件\u 3。拼花地板 文件\u 3。拼花地板 当我尝试读取特定日期的文件时,上面提到的数字会引发ession.r