我正在尝试从大小为 100MB 的 excel 文件(xlsx 格式)中读取数据。在读取 excel 数据时,我面临 outOfMemoryException。尝试将 JVM 堆大小增加到 1024MB,但仍然没有用,我不能增加更多的大小。也尝试过运行垃圾收集但没有用。任何人都可以帮助我解决我的问题。
感谢 Pavan Kumar OV S。
我正在尝试从大小为 100MB 的 excel 文件(xlsx 格式)中读取数据。在读取 excel 数据时,我面临 outOfMemoryException。尝试将 JVM 堆大小增加到 1024MB,但仍然没有用,我不能增加更多的大小。也尝试过运行垃圾收集但没有用。任何人都可以帮助我解决我的问题。
感谢 Pavan Kumar OV S。
默认情况下,JVM 对当前进程可用的内存量设置上限,以防止失控进程吞噬系统资源并使机器停止运行。在读取或写入大型电子表格时,JVM 可能需要比默认分配给 JVM 更多的内存 - 这通常表现为 java.lang.OutOfMemoryError。
对于命令行进程,您可以使用 -Xms 和 -Xmx 选项为 JVM 分配更多内存,例如。分配 10 MB 的初始堆分配,您可以使用 100 MB 作为上限:
java -Xms10m -Xmx100m -classpath jxl.jar spreadsheet.xls
您可以参考http://www.andykhan.com/jexcelapi/tutorial.html#introduction了解更多详情