【问题标题】:Java - .jar file runs out of heap but executing in eclipse doesn'tJava - .jar 文件用尽堆但在 Eclipse 中执行不会
【发布时间】: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);
...

【问题讨论】:

标签: java eclipse javafx jar


【解决方案1】:

尝试将 xmlx 参数设置为至少 1GB 来运行您的程序,因为您知道它会消耗同样多的空间。

java -Xmx 2048

您的程序可能只有 3MB 的信息。但是您的程序可以轻松地进行操作来复制此信息或以其他方式对其进行转换,并使其比原始数据大 1000 倍。您可以尝试通过手动释放资源来优化您的程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-09
    • 2014-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-31
    相关资源
    最近更新 更多