读取大型 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.
当我 运行 我在 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.