【发布时间】:2012-06-18 15:44:22
【问题描述】:
我在 JDK 1.5 环境中使用 apache POI 3.7 和 -Xms256m -Xmx512m -XX:PermSize=64M -XX:MaxPermSize=1000M 作为 JVM 参数。
我写了这样的代码来读取 xlsx 文件,
File file = new File("C:\\D\\Data Book.xlsx");
InputStream inputStream = new FileInputStream(file);
OPCPackage opcPackage = OPCPackage.open(inputStream);
XSSFWorkbook workbook = new XSSFWorkbook(opcPackage);
在第四行,它进入空闲状态。如果我删除 JVM 参数,它会抛出 OutOfMemoryError。我的文件大小是 6MB。
【问题讨论】:
-
你怎么知道它处于空闲状态?是不是还在处理中?
-
感谢您的回复,是的,它没有继续进行。一段时间后它会抛出 OutOfMemoryError。
-
这表明a)它不是空闲的并且b)你需要在你已经指定的之上分配额外的内存。
-
但我希望我传递给 JVM 的参数足以读取 6 MB。
-
文件在磁盘上的大小为 6 MB,并不意味着库需要同样少量的内存来加载和处理文件。
标签: java apache-poi