我在使用 Apache POI 时遇到 OutOfMemoryError。我正在从数据库中提取超过 400,000 条记录到 Excel 工作表。目前我的 eclipse.ini 文件如下所示:
-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.200.v20130521-0416
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
--launcher.appendVmargs
-vmargs
-Dosgi.requiredJavaVersion=1.6
-Xms40m
-Xmx512m
我知道我必须增加内存力,但我也不确定应该改变多少。我也应该在其他地方改变它吗?我确定有关于此的链接,所以如果有人可以指导我,那就太好了。 提前致谢, 桑尼
最佳答案
Excel 有最大行数。对于 XLS,限制是 65536 行,对于 XLS,限制是 1048576 行。因此,按照建议,您可以使用 SXSSF 或将其写出到 csv。至于更改堆大小,有几种方法可以做到这一点。
- 将 eclipse.ini 中的 -Xmx512m 更改为 -Xmx1024m (1GB) 或您想要的任何值。
- 在 Eclipse 中转到运行配置 >> 参数并在 VM 参数下放置 -Xmx1024m
- 如果您有一个带有产品的插件项目,您可以转到“产品”,选择“启动”选项卡,然后在 VM 参数下:输入 -Xmx1024m
关于java - 增加内存以避免 OutOfMemory 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25081710/