Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 354406

Summary: [insight] out of memory weaving class from groovy
Product: [Tools] AspectJ Reporter: Andrew Clement <aclement>
Component: LTWeavingAssignee: aspectj inbox <aspectj-inbox>
Status: RESOLVED WONTFIX QA Contact:
Severity: major    
Priority: P3    
Version: DEVELOPMENT   
Target Milestone: 1.6.12   
Hardware: PC   
OS: Mac OS X - Carbon (unsup.)   
Whiteboard:

Description Andrew Clement CLA 2011-08-10 12:00:14 EDT
SEVERE: org/codehaus/groovy/runtime/ArrayUtil
java.lang.OutOfMemoryError: Java heap space
	at java.util.HashMap.addEntry(HashMap.java:770)
	at java.util.HashMap.put(HashMap.java:402)
	at java.util.HashSet.add(HashSet.java:217)
	at org.aspectj.apache.bcel.generic.InstructionHandle.addTargeter(InstructionHandle.java:161)
	at org.aspectj.apache.bcel.generic.MethodGen.<init>(MethodGen.java:300)
	at org.aspectj.weaver.bcel.LazyMethodGen.initialize(LazyMethodGen.java:337)
	at org.aspectj.weaver.bcel.LazyMethodGen.markAsChanged(LazyMethodGen.java:505)
	at org.aspectj.weaver.bcel.LazyMethodGen.getBody(LazyMethodGen.java:895)
	at org.aspectj.weaver.bcel.BcelShadow.makeShadowForMethod(BcelShadow.java:679)
	at org.aspectj.weaver.bcel.BcelShadow.makeMethodExecution(BcelShadow.java:675)
	at org.aspectj.weaver.bcel.BcelShadow.makeMethodExecution(BcelShadow.java:655)
	at org.aspectj.weaver.bcel.BcelClassWeaver.match(BcelClassWeaver.java:2531)
	at org.aspectj.weaver.bcel.BcelClassWeaver.weave(BcelClassWeaver.java:474)
	at org.aspectj.weaver.bcel.BcelClassWeaver.weave(BcelClassWeaver.java:100)
	at org.aspectj.weaver.bcel.BcelWeaver.weave(BcelWeaver.java:1694)
	at org.aspectj.weaver.bcel.BcelWeaver.weaveWithoutDump(BcelWeaver.java:1638)
	at org.aspectj.weaver.bcel.BcelWeaver.weaveAndNotify(BcelWeaver.java:1401)
	at org.aspectj.weaver.bcel.BcelWeaver.weave(BcelWeaver.java:1187)
	at org.aspectj.weaver.tools.WeavingAdaptor.getWovenBytes(WeavingAdaptor.java:469)
	at org.aspectj.weaver.tools.WeavingAdaptor.weaveClass(WeavingAdaptor.java:320)
	at org.aspectj.weaver.loadtime.Aj.preProcess(Aj.java:99)
	at org.aspectj.weaver.loadtime.ClassPreProcessorAgentAdapter.transform(ClassPreProcessorAgentAdapter.java:54)
	at sun.instrument.TransformerManager.transform(TransformerManager.java:188)
	at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:385)
Comment 1 Andrew Clement CLA 2011-08-12 19:02:34 EDT
this was due to the unusual ArrayUtil type in groovy that has methods with more than 200 parameters.  Copying the targeters for those is going to use a lot of memory.   I imagine that typically those methods don't need weaving, it would be an usual aspect that wanted to (in this case it was a rogue perthis).  I might revisit the memory usage of targeter copying if this comes up in a real use case.