【问题标题】:Handling PermGen errors in ant bpelc task处理 ant bpelc 任务中的 PermGen 错误
【发布时间】:2008-12-10 22:26:31
【问题描述】:

在使用 jdk 1.5.0_11 在 Linux 下使用 ant 编译项目时,我遇到了 java.lang.OutOfMemoryError: PermGen 错误。同一个项目在windows下编译没有问题。

这通常与分配给 JVM 的 MaxPermSize 有关。 Irakli Nadareishvili 拥有best explanations of PermGen errors 之一和设置Java HotSpot VMOptions 的指南(例如-XX:MaxPermSize=128M)

在这种情况下,我迅速将问题缩小到特定的bpelc ant 任务

<bpelc input="${build.dir}/bpel/bpel.xml" 
out="${build.dir}/output" rev="${version}" home="${bpel.home}"/>

现在我不认为 bpelc 像 javac 那样采用 compilerarg 元素:

  <javac srcdir="${src.dir}"
         destdir="${classes.dir}"
         classpathref="libraries">
    <compilerarg value="-XX:MaxPermSize=128M"/>
  </javac> 

那么如何修复 bpelc 任务的错误呢?到目前为止,我想出的最佳解决方案是设置 ANT_OPTS 环境变量。到目前为止,这似乎避免了这个问题。

export ANT_OPTS=-XX:MaxPermSize=128m

谁能解释更多?这是一个万无一失的解决办法吗?

【问题讨论】:

    标签: ant bpel


    【解决方案1】:

    bpelc 任务在运行ant 的原始JVM 中执行时,设置ANT_OPTS(或等效的东西)是唯一可能的解决方案。

    这样一个等效的事情可能是将该任务重构为第二个 ant 构建文件并使用单独的 JVM 运行它。不是真的更好,但根据您的环境,它可能更容易实现。

    【讨论】:

    • @saua 感谢您的支持!如果我们再次遇到 PermGen 问题,我认为您的重构建议将是下一步。
    猜你喜欢
    • 1970-01-01
    • 2010-09-10
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多