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

GC overhead limit exceeded when reading large xls file

当我 运行 我在 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

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

的确,Microsoft 文档处理程序的库需要很多资源,但并没有像我一开始想的那样严重到导致应用程序 运行 失败。事实上,那个问题向我揭示了一个弱点和不足。

由于使用 Netbeans 8.0.2,新的 属性

app.conf

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

中的值

harness/etc/app.conf

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