Community
Participate
Working Groups
JAVA_OPTS="-Xmx1024m " \ ajc \ -source 1.6 \ -classpath "/opt/csltools/Linux/2.6/x86_64/gcc-4.1.2/64/aspectj_1.6.6/lib/aspectjrt.jar:../pub/server/lib/asn1rt-ext.jar:/opt/csltools/Linux/2.6/x86_64/gcc-4.1.2/64/groovy_1.7.0/lib/groovy-"1.7.0".jar" \ -injars ../pub/server/lib/amp.jar \ ../obj/server/aspects/com/omxgroup/xstream/amp/*.aj \ -outjar ../pub/server/lib/amp-ext.jar /home/joky/wa/head2/amp_java/obj/server/aspects/com/omxgroup/xstream/amp/TestUserNameAspect.aj [error] Internal compiler error java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Arrays.java:2882) at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:100) at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:390) at java.lang.StringBuilder.append(StringBuilder.java:119) at java.lang.StringBuilder.append(StringBuilder.java:115) at java.util.AbstractCollection.toString(AbstractCollection.java:422) at java.lang.String.valueOf(String.java:2827) at java.lang.StringBuilder.append(StringBuilder.java:115) at org.aspectj.weaver.bcel.BcelObjectType.printWackyStuff(BcelObjectType.java:512) at org.aspectj.weaver.bcel.LazyClassGen.printOne(LazyClassGen.java:801) at org.aspectj.weaver.bcel.LazyClassGen.print(LazyClassGen.java:776) at org.aspectj.weaver.bcel.LazyClassGen.toLongString(LazyClassGen.java:764) at org.aspectj.weaver.bcel.BcelWeaver.weave(BcelWeaver.java:1837) at org.aspectj.weaver.bcel.BcelWeaver.weaveWithoutDump(BcelWeaver.java:1755) at org.aspectj.weaver.bcel.BcelWeaver.weaveAndNotify(BcelWeaver.java:1515) at org.aspectj.weaver.bcel.BcelWeaver.weave(BcelWeaver.java:1293) at org.aspectj.ajdt.internal.compiler.AjPipeliningCompilerAdapter.weaveQueuedEntries(AjPipeliningCompilerAdapter.java:435) at org.aspectj.ajdt.internal.compiler.AjPipeliningCompilerAdapter.queueForWeaving(AjPipeliningCompilerAdapter.java:371) at org.aspectj.ajdt.internal.compiler.AjPipeliningCompilerAdapter.afterProcessing(AjPipeliningCompilerAdapter.java:358) at org.aspectj.ajdt.internal.compiler.CompilerAdapter.ajc$after$org_aspectj_ajdt_internal_compiler_CompilerAdapter$5$6b855184(CompilerAdapter.aj:98) at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.process(Compiler.java:652) at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:392) at org.aspectj.ajdt.internal.core.builder.AjBuildManager.performCompilation(AjBuildManager.java:1007) at org.aspectj.ajdt.internal.core.builder.AjBuildManager.performBuild(AjBuildManager.java:268) at org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild(AjBuildManager.java:182) 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) (no source information available) ABORT Exception thrown from AspectJ 1.6.6 This might be logged as a bug already -- find current bugs at http://bugs.eclipse.org/bugs/buglist.cgi?product=AspectJ&component=Compiler 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. Java heap space when weaving aspects when weaving when batch building BuildConfig[null] #Files=846 AopXmls=#0 Java heap space java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Arrays.java:2882) at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:100) at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:390) at java.lang.StringBuilder.append(StringBuilder.java:119) at java.lang.StringBuilder.append(StringBuilder.java:115) at java.util.AbstractCollection.toString(AbstractCollection.java:422) at java.lang.String.valueOf(String.java:2827) at java.lang.StringBuilder.append(StringBuilder.java:115) at org.aspectj.weaver.bcel.BcelObjectType.printWackyStuff(BcelObjectType.java:512) at org.aspectj.weaver.bcel.LazyClassGen.printOne(LazyClassGen.java:801) at org.aspectj.weaver.bcel.LazyClassGen.print(LazyClassGen.java:776) at org.aspectj.weaver.bcel.LazyClassGen.toLongString(LazyClassGen.java:764) at org.aspectj.weaver.bcel.BcelWeaver.weave(BcelWeaver.java:1837) at org.aspectj.weaver.bcel.BcelWeaver.weaveWithoutDump(BcelWeaver.java:1755) at org.aspectj.weaver.bcel.BcelWeaver.weaveAndNotify(BcelWeaver.java:1515) at org.aspectj.weaver.bcel.BcelWeaver.weave(BcelWeaver.java:1293) at org.aspectj.ajdt.internal.compiler.AjPipeliningCompilerAdapter.weaveQueuedEntries(AjPipeliningCompilerAdapter.java:435) at org.aspectj.ajdt.internal.compiler.AjPipeliningCompilerAdapter.queueForWeaving(AjPipeliningCompilerAdapter.java:371) at org.aspectj.ajdt.internal.compiler.AjPipeliningCompilerAdapter.afterProcessing(AjPipeliningCompilerAdapter.java:358) at org.aspectj.ajdt.internal.compiler.CompilerAdapter.ajc$after$org_aspectj_ajdt_internal_compiler_CompilerAdapter$5$6b855184(CompilerAdapter.aj:98) at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.process(Compiler.java:652) at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:392) at org.aspectj.ajdt.internal.core.builder.AjBuildManager.performCompilation(AjBuildManager.java:1007) at org.aspectj.ajdt.internal.core.builder.AjBuildManager.performBuild(AjBuildManager.java:268) at org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild(AjBuildManager.java:182) 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) Feb 11, 2010 5:41:44 PM org.aspectj.weaver.tools.Jdk14Trace info INFO: Dumping to /home/joky/wa/head2/amp_java/src/./ajcore.20100211.174144.646.txt
I'm not sure JAVA_OPTS is respected. Can you open ajc.bat - you will see a hardcoded Xmx of 64M - can you try directly increasing that and compiling again? Also please use AspectJ 1.6.8 as it has a different memory profile to 1.6.6
Also happens in 1.6.8. As I was running on Linux, ajc.bat wouldn't work. When I tried changing JAVA_OPTS to 2024m, it worked. But that's an awful lot of memory to be using for a compile.
It is a lot of memory yes, but 846 aspects is also a lot of aspects :)
(In reply to comment #3) > It is a lot of memory yes, but 846 aspects is also a lot of aspects :) Yes it is a lot of aspects. I was auto generating aspects to insert new methods into autogenerated classes from another 3rd party tool. Nothing fancy. It's still about 2MB per aspect, which seems awfully expensive to me.