我正在尝试从大小为100MB的excel文件(xlsx格式)中读取数据。在读取excel数据时,我面临outOfMemoryException。尝试将JVM堆大小增加到1024MB,但仍然没有用,我不能再增加大小。也尝试通过运行垃圾收集但没有用。任何人都可以帮我解决我的问题。
由于 Pavan Kumar O V S.
答案 0 :(得分:0)
默认情况下,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了解更多详情