我目前正在使用带有Javafx的GUI应用程序工作,该应用程序显示一些Excel文件的内容(总大小约为3MB)。我正在使用apache POI
加载excel文件数据,然后将其存储在某些自定义objec中。
如果我从eclipse运行该应用程序,则一切正常。如果我使用maven将其构建为.jar
,则会收到out of heap
错误,并且必须设置-Xmx512M
,以使应用正常运行而不会崩溃。
我刚刚注意到,我的程序在eclipse中运行时占用了1GB RAM,而在jar中运行了大约580MB(使用上述设置)。
即使我的程序实际上仅包含3MB的实际信息,我也不知道为什么我的程序需要这么多的RAM。
我什至使用apache POI
中的文件方法来减少内存消耗:
final URL path = this.getClass().getClassLoader().getResource(filename);
final File f;
if(path.getPath().contains(".jar"))
f = new File(filename);
else
f = new File(path.getFile());
final Workbook workbook = WorkbookFactory.create(f);
...
答案 0 :(得分:0)
请尝试将xmx参数设置为至少1GB来运行程序,因为您知道它会消耗很多内存。
java -Xmx 2048
您的程序可能只有3MB的信息。但是您的程序可以轻松地执行操作来复制此信息或以其他方式对其进行转换,使其变得比原始数据大1000倍。您可以尝试通过手动释放资源来优化程序。