首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为AJC Ant任务设置垃圾收集器?

如何为AJC Ant任务设置垃圾收集器?
EN

Stack Overflow用户
提问于 2013-09-24 11:57:25
回答 2查看 787关注 0票数 1

我在进行编译时编织时出现内存不足的错误。如您所见,我已经将Xmx (通过maxmem)设置为1024m。这可能是因为我试图编织的jar大约为70MB。

如何设置垃圾收集器?我尝试使用X参数,但是当我使用JConsole连接到进程时,没有设置ConcMarkSweep。

代码语言:javascript
复制
    <echo message="Weaving..."/>
    <aspectj:iajc classpathref="compile.libs" aspectpath="${src.dir}" outJar="${output.jar}" fork="true" maxmem="1024m" X="+UseConcMarkSweepGC">
        <inpath>
            <pathelement path="${classes.dir}"/>
        </inpath>
    </aspectj:iajc>

错误是:

代码语言:javascript
复制
Bugs for exceptions thrown have titles File:line from the top stack, 
e.g., "SomeFile.java:243"

If you don't find the exception below in a bug, please add a new bug
at http://bugs.eclipse.org/bugs/enter_bug.cgi?product=AspectJ
To make the bug a priority, please include a test program
that can reproduce this exception.
GC overhead limit exceeded

when weaving classes 
when weaving 
when batch building BuildConfig[null] #Files=0 AopXmls=#0
GC overhead limit exceeded
java.lang.OutOfMemoryError: GC overhead limit exceeded
    at org.aspectj.apache.bcel.classfile.ConstantPool.copy(ConstantPool.java:69)
    at org.aspectj.apache.bcel.generic.ClassGen.<init>(ClassGen.java:161)
    at org.aspectj.weaver.bcel.LazyClassGen.<init>(LazyClassGen.java:255)
    at org.aspectj.weaver.bcel.BcelObjectType.getLazyClassGen(BcelObjectType.java:523)
    at org.aspectj.weaver.bcel.BcelWeaver.weave(BcelWeaver.java:1742)
    at org.aspectj.weaver.bcel.BcelWeaver.weaveWithoutDump(BcelWeaver.java:1710)
    at org.aspectj.weaver.bcel.BcelWeaver.weaveAndNotify(BcelWeaver.java:1472)
    at org.aspectj.weaver.bcel.BcelWeaver.weave(BcelWeaver.java:1286)
    at org.aspectj.ajdt.internal.compiler.AjPipeliningCompilerAdapter.weaveQueuedEntries(AjPipeliningCompilerAdapter.java:435)
    at org.aspectj.ajdt.internal.compiler.AjPipeliningCompilerAdapter.afterCompiling(AjPipeliningCompilerAdapter.java:304)
    at org.aspectj.ajdt.internal.compiler.CompilerAdapter.ajc$afterReturning$org_aspectj_ajdt_internal_compiler_CompilerAdapter$2$f9cc9ca0(CompilerAdapter.aj:73)
    at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:430)
    at org.aspectj.ajdt.internal.core.builder.AjBuildManager.performCompilation(AjBuildManager.java:1003)
    at org.aspectj.ajdt.internal.core.builder.AjBuildManager.performBuild(AjBuildManager.java:267)
    at org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild(AjBuildManager.java:181)
    at org.aspectj.ajdt.ajc.AjdtCommand.doCommand(AjdtCommand.java:112)
    at org.aspectj.ajdt.ajc.AjdtCommand.runCommand(AjdtCommand.java:60)
    at org.aspectj.tools.ajc.Main.run(Main.java:355)
    at org.aspectj.tools.ajc.Main.runMain(Main.java:234)
    at org.aspectj.tools.ajc.Main.main(Main.java:84)

23-Sep-2013 23:58:12 org.aspectj.weaver.tools.Jdk14Trace info
INFO: Dumping to D:\Projects\Delete\AspectjTest\.\ajcore.20130923.234357.932.txt

1 fail|abort
EN

回答 2

Stack Overflow用户

发布于 2013-09-25 00:59:56

一种解决方法是使用weaver ant命令,并将主要<java>类列为正在运行的对象。org.aspectj.tools.ajc.Main,您还必须手动设置此ant任务自动执行的所有参数。

票数 1
EN

Stack Overflow用户

发布于 2015-10-31 01:53:09

我是通过ANTs exec任务调用带参数的aspectj1.7/bin/ajc.bat (1.7.3)得到的。用-Xmx3g替换ajc.bat和编辑-Xmx64g帮助我尝试在guava-18.0.jar上应用它。

类似地,这里也提到了:https://bugs.eclipse.org/bugs/show_bug.cgi?id=36234#c3

如果您不想使用aspectj:iajc任务,那么应该像上面那样使用适当的JVM 运行ant.bat (或sh)。

在ANT Eclipse JRE => Runtime JRE: [x] Separate JRE: ...中(在Eclipse中正常发生,以防它没有正确配置,并且您不希望在eclipse.ini文件中进行JVM更改),您将需要为您的目标调整隐式创建的JRE => Runtime JRE: [x] Separate JRE: ...,并设置JRE => Runtime JRE: [x] Separate JRE: ...并调整其VM arguments: -Xmx3g

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18972723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档