Community
Participate
Working Groups
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)
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.