读取大型xls文件时超出了GC开销限制

时间:2015-08-16 23:14:06

标签: java apache-poi jxl

当我在Netbeans IDE中运行我的项目(编译并测试它)时,它运行正常。它使我能够读取大小为25000行的xls文件并提取上面的所有信息,然后将它们保存到数据库中。

生成安装程序并交付时出现问题。当我安装我的应用程序并运行它时,我得到了错误:

java.lang.OutOfMemoryError: GC overhead limit exceeded
    at jxl.read.biff.File.read(File.java:217)
    at jxl.read.biff.Record.getData(Record.java:117)
    at jxl.read.biff.CellValue.<init>(CellValue.java:94)
    at jxl.read.biff.LabelSSTRecord.<init>(LabelSSTRecord.java:53)
    at jxl.read.biff.SheetReader.read(SheetReader.java:412)
    at jxl.read.biff.SheetImpl.readSheet(SheetImpl.java:716)
    at jxl.read.biff.WorkbookParser.getSheet(WorkbookParser.java:257)
    at com.insy2s.importer.SemapExcelImporter.launchImport(SemapExcelImporter.java:82)
    at//staff

我甚至是用户POI库,但我有同样的情况。

更新:

在我的应用程序的 messages.log 文件中,我发现了这些奇怪的值(我在 netbeans.conf 已更改

Input arguments:
    -Xms24m
    -Xmx64m
    -XX:MaxPermSize=256m
    -Dnetbeans.user.dir=C:\Program Files\insy2s_semap_app
    -Djdk.home=C:\Program Files\Java\jdk1.8.0_05
    -Dnetbeans.home=C:\Program Files\insy2s_semap_app\platform

1 个答案:

答案 0 :(得分:0)

好的,我得到了答案......让我们从头开始。

微软确实记录了hanlders&#39;库需要很多资源,但不会像我在开始时想到的那样导致应用程序运行失败。事实上,这个问题已经向我揭示了一个弱点和短缺。

由于使用Netbeans 8.0.2,新属性

  

app.conf

应该考虑在内。它具备配置我们的应用程序所需的所有功能。 但是无法直接编辑它以增加最大允许内存,我们必须更改

中的值
  

线束的/ etc / app.conf

在netbeans安装目录中。有关详细信息,请查看here