slu*_*rew 11 java performance google-app-engine apache-poi
我在.xlsx
使用Apache POI 解析文件时遇到了一些问题- 我正在使用已java.lang.OutOfMemoryError: Java heap space
部署的应用程序.我只处理5MB以下和大约70,000行的文件,所以我怀疑阅读其他问题是否有问题.
正如本评论中所建议的,我决定SSPerformanceTest.java
使用建议的变量运行,以便查看我的代码或设置是否有任何问题.结果显示HSSF(.xls
)和XSSF(.xlsx
)之间存在显着差异:
1)HSSF 50000 50 1:经过1秒
2)SXSSF 50000 50 1:经过5秒
3)XSSF 50000 50 1:经过15秒
该FAQ具体说:
如果你不能在3秒内完成所有HSSF,XSSF和SXSSF中50,000行和50列的运行(理想情况下要少得多!),问题在于您的环境.
接下来,它说要运行XLS2CSV.java
我已经完成的任务.在上面生成的XSSF文件(包含50000行和50列)中输入大约需要15秒 - 与写入文件所需的数量相同.
我的环境有问题,如果是这样,我该如何进一步调查?
VisualVM的统计数据显示在处理过程中使用的堆高达1.2Gb.当然,考虑到与处理开始之前相比,这是一个额外的演出?
注意:上面提到的堆空间异常只发生在生产中(在Google App Engine上)并且只发生在.xlsx
文件中,但是这个问题中提到的测试都是在我的开发机器上运行的-Xmx2g
.我希望如果我可以解决我的开发设置问题,它将在部署时使用更少的内存.
来自app引擎的堆栈跟踪:
java.lang.OutOfMemoryError:Java堆空间在org.apache.xmlbeans.impl.store.Cur.createElementXobj(Cur.java:260)在org.apache.xmlbeans.impl.store.Cur $ CurLoadContext.startElement(所造成Cur.java:2997)在org.apache.xmlbeans.impl.store.Locale $ SaxHandler.startElement(Locale.java:3211)在org.apache.xmlbeans.impl.piccolo.xml.Piccolo.reportStartTag(Piccolo.java: 1082)在org.apache.xmlbeans.impl.piccolo.xml.PiccoloLexer.parseAttributesNS(PiccoloLexer.java:1802)在org.apache.xmlbeans.impl.piccolo.xml.PiccoloLexer.parseOpenTagNS(PiccoloLexer.java:1521)
我遇到了同样的问题,使用Apache POI阅读庞大的.xlsx文件,我遇到了
该库充当流式API的包装器,同时保留了标准POI API的语法
该库可以帮助您读取大文件.
归档时间: |
|
查看次数: |
2335 次 |
最近记录: |