【发布时间】:2019-04-03 09:13:00
【问题描述】:
我目前正在开发一个带有 javafx 的 GUI 应用程序,它显示一些 excel 文件的内容(总大小约为 3MB)。我正在使用 apache POI 加载 excel 文件数据,然后将其存储在一些自定义对象中。
如果我从 Eclipse 运行应用程序,一切正常。如果我使用 maven 将其构建为 .jar,我会收到 out of heap 错误,我必须设置 -Xmx512M 以便应用正常运行而不会崩溃。
我刚刚注意到,我的程序在 eclipse 中运行时占用了 1GB 的 RAM,并且在上面提到的设置下作为 jar 运行时占用了大约 580MB。
我不知道为什么我的程序需要这么多 RAM,尽管它实际上只包含 3MB 的实际信息。
我什至使用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);
...
【问题讨论】:
-
exact command line used in Eclipse 是什么,它运行 JAR 是什么?