我的程序使用了大量内存,因为它必须读取巨大的.xls -Files。 所以我在Eclipse中添加了参数-Xms512,这对我很有用。 当我从命令行运行时,导出的jar文件的工作方式相同:
java -jar -Xms512 Excel_to_csv.jar
但是当我使用.bat文件运行它时,它会运行,但由于内存问题而崩溃:
java -jar -Xms512m Excel_to_csv.jar
我很感激任何想法。
答案 0 :(得分:0)
我有个主意,但我不确定。要使用Xms
参数,运行该命令的用户必须具有锁定内存中的页面的权限。通常,此权利授予您的用户帐户。当您在命令行中运行命令时,它在您的用户帐户下运行,一切正常。将命令打包到批处理文件并启动它时,它将在“SYSTEM”帐户下运行。现在该帐户可能没有此权限(不确定这一点)。要解决此问题,请执行以下操作:
答案 1 :(得分:0)
修正参数的顺序:-jar
期望文件名作为参数,但是你给它-Xms
。并说" MB"也许是一个好主意:
java -Xms512m -jar Excel_to_csv.jar
我不确定当你只说512
时默认是什么,但我的猜测是KiB(意味着RAM的512 KiB),这甚至不足以启动这个过程。
也就是说,ms
只是设置了Java获得的 start 内存量。如果处理复杂的Excel,则可能需要更多内存。试试
java -Xms512m -Xmx2000m -jar Excel_to_csv.jar
允许Java在必要时分配多达2000 MiB。