java 解析excel内存消耗大

使用 HSSFWorkbook 和 XSSFWorkbook 时,
文件大小16M,消耗内存近126M
HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(file));
最大内存:508M
已分配内存:127M
已分配内存中的剩余空间:121M
最大可用内存:502M
===============
最大内存:508M
已分配内存:186M
已分配内存中的剩余空间:55M
最大可用内存:376M

xlsx文件大小4M,内存消耗近754M
XSSFWorkbook workbook = new XSSFWorkbook(new FileInputStream(file));

最大内存:1016M
已分配内存:127M
已分配内存中的剩余空间:121M
最大可用内存:1010M
===============
最大内存:1016M
已分配内存:1016M
已分配内存中的剩余空间:256M
最大可用内存:256M
有什么办法可以解决内存消耗过大的问题.

第1个回答  2014-01-10
之前我解析过一个180M的EXCEL文件,整整25分钟,也没出现内存不足的错误。而内存占用一开始是一直升,到了1G多一点的时候就稳定了,应该在这个时候开始回收垃圾了。
第2个回答  2014-01-09
还是用poi吧 Jxl都已经不更新了,高版本的没法解析了

EXCEL 有一种格式叫做csv 这种解析快,内存小 而且数据格式很好解析啊
第3个回答  2014-01-10
是否是你的内部代码循环过多,可以优化你的解析逻辑
第4个回答  2014-01-09
这有可能是使用插件的问题,你可以尝试使用别的插件看看,比如像jxl等追问

jxl试过,在获得sheet的时候使用内存和poi一样

本回答被提问者采纳
第5个回答  2014-01-09
这个还真没考虑过,不过我们解析excel时用的是jxl技术,你试试jxl是不是会出现这样的问题追问

jxl试过,在获得sheet的时候使用内存和poi一样

追答

好吧,这个问题真心没解决过。问问高手吧。

相似回答