【问题标题】:Invoking install4j compiler from ant results in PermGen OutOfMemory errors从 ant 调用 install4j 编译器会导致 PermGen OutOfMemory 错误
【发布时间】:2012-05-22 21:15:27
【问题描述】:

我遇到了这样一种情况:install4j v4.2.8 在使用 GUI 和从命令行调用 install4jc 时运行良好并生成安装程序,但在通过 install4j ant 任务调用时失败并显示以下消息:

install4j: compilation failed. Reason: java.lang.OutOfMemoryError: PermGen space

使用 visualvm,我确定 ant 任务正在分叉一个单独的 JVM,当 PermGen 使用量达到大约 88MB 时,它似乎失败了。 install4j ant 任务文档没有说明能够将 VM args(例如 -XX:MaxPermSize=256MB)传递到分叉的 JVM,但我想知道是否可以选择这种方法或类似的方法。

【问题讨论】:

    标签: permgen install4j


    【解决方案1】:

    您可以在文件[install4j安装目录]/bin/install4j.vmoptions中调整命令行编译器的VM参数。只需在此处增加 -Xmx 值并添加 -XX:MaxPermSize VM 参数即可。

    在 install4j 5.0.7 之前,存在一个与在 .vmoptions 文件中包含相关文件相关的错误。对于这些旧版本,请在 install4jc.vmoptions 中删除对 install4j.vmoptions 的包含并直接在此处添加 VM 参数。

    【讨论】:

    • 谢谢。 install4jc.vmoptions 文件引用 install4j.vmoptions 文件,该文件又设置了 4GB 的最大堆和 256MB 的 MaxPermSize。这就解释了 GUI 和 install4jc 工作的原因。如何告诉 install4j ant 任务查看其中任何一个文件?
    • install4j ant 任务调用 install4jc.exe,因此应用相同的设置。也许 ant 任务指向不同的 install4j 安装?
    • 嗯...我指的是 C:\Program Files\install4j\bin\ant.jar,它位于盒子上唯一的 install4j 目录中。还有其他建议吗?是否有可能这是自 v4.2.8 以来已修复的错误?
    • 是的,5.0.7 中修复了一个问题。请尝试删除 install4jc.vmoptions 中的 include to install4j.vmoptions 并直接在此处添加 VM 参数。
    • 谢谢,成功了!您想编辑答案以包含这些详细信息(4.x 和 5.0.7+ 之间的差异等)还是应该?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-01
    • 1970-01-01
    • 2021-05-17
    相关资源
    最近更新 更多