Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] OutOfMemoryError caused by ltw of Groovy?

Hi,

AspectJ can weave Groovy just fine - Spring Insight uses AspectJ to
weave into Grails apps in order to collect monitoring info.

A few observations though:

1. groovy classes are *big*, bigger than their java counterparts.
When AspectJ has a problem it tries to be helpful and print out the
class containing the problem by converting the bytecode into its
'opcode' form - like you would see if you used javap.  Something has
gone wrong and in trying to tell you what has gone wrong, it has run
out of space trying to print this groovy class.  Unfortunately the
original error is lost now this out of memory has occurred.

2. From your ajcore file I notice you have an Xmx of 256m, that isn't
particularly high.

I'd recommend running with a larger Xmx, that should enable the true
error to come out as the groovy class will be printable.  Based on
that error we can decide what to do next...  There currently is a
!within(groovy) type pointcut, so you would just have to exclude them
based on their names, but perhaps lets see what the underlying error
is before doing anything else.

cheers
Andy

On 10 February 2011 15:56, Grey, Lee <Lee.Grey@xxxxxxx> wrote:
> I've been using AspectJ to advise a method call in Sonic ESB without any
> issues for about a week.
>
> Recently, though, I started building out the functionality, and I included
> the use of a Groovy class that is instantiated and called from within my
> aspect.  About that same time, I started seeing a long pause followed by a
> stack trace each time I ran the first message through the Sonic container
> after a restart.
>
> I've now confirmed that this happens not upon instantiating the Groovy
> object but during the first call to any one of its methods.  It doesn't
> matter which method gets called.  That first method call will cause the
> error that I've attached.
>
> Is this AspectJ gagging on Groovy?  What can I do to prevent?  I don't need
> to use any aspects on the Groovy code, and I don't believe any of my
> pointcuts reference my Groovy code.  I just need to make AspectJ leave
> Groovy alone, I guess.
>
> Thanks,
> Lee Grey
>
> Feb 10, 2011 6:50:31 PM org.aspectj.weaver.tools.Jdk14Trace error
> SEVERE: org/codehaus/groovy/runtime/ArrayUtil
> java.lang.OutOfMemoryError: Java heap space
>  at java.io.ByteArrayOutputStream.write(Unknown Source)
>  at java.io.PrintStream.write(Unknown Source)
>  at sun.nio.cs.StreamEncoder$CharsetSE.writeBytes(Unknown Source)
>  at sun.nio.cs.StreamEncoder$CharsetSE.implFlushBuffer(Unknown Source)
>  at sun.nio.cs.StreamEncoder.flushBuffer(Unknown Source)
>  at java.io.OutputStreamWriter.flushBuffer(Unknown Source)
>  at java.io.PrintStream.newLine(Unknown Source)
>  at java.io.PrintStream.println(Unknown Source)
>  at
> org.aspectj.weaver.bcel.LazyMethodGen$BodyPrinter.print(LazyMethodGen.java:652)
>  at
> org.aspectj.weaver.bcel.LazyMethodGen$BodyPrinter.run(LazyMethodGen.java:572)
>  at org.aspectj.weaver.bcel.LazyMethodGen.print(LazyMethodGen.java:533)
>  at org.aspectj.weaver.bcel.LazyClassGen.printOne(LazyClassGen.java:834)
>  at org.aspectj.weaver.bcel.LazyClassGen.print(LazyClassGen.java:793)
>  at org.aspectj.weaver.bcel.LazyClassGen.toLongString(LazyClassGen.java:781)
>  at org.aspectj.weaver.bcel.BcelWeaver.weave(BcelWeaver.java:1703)
>  at
> org.aspectj.weaver.bcel.BcelWeaver.weaveWithoutDump(BcelWeaver.java:1618)
>  at org.aspectj.weaver.bcel.BcelWeaver.weaveAndNotify(BcelWeaver.java:1379)
>  at org.aspectj.weaver.bcel.BcelWeaver.weave(BcelWeaver.java:1173)
>  at
> org.aspectj.weaver.tools.WeavingAdaptor.getWovenBytes(WeavingAdaptor.java:467)
>  at
> org.aspectj.weaver.tools.WeavingAdaptor.weaveClass(WeavingAdaptor.java:318)
>  at org.aspectj.weaver.loadtime.Aj.preProcess(Aj.java:96)
>  at
> org.aspectj.weaver.loadtime.ClassPreProcessorAgentAdapter.transform(ClassPreProcessorAgentAdapter.java:54)
>  at sun.instrument.TransformerManager.transform(Unknown Source)
>  at sun.instrument.InstrumentationImpl.transform(Unknown Source)
>  at java.lang.ClassLoader.defineClass1(Native Method)
>  at java.lang.ClassLoader.defineClass(Unknown Source)
>  at java.security.SecureClassLoader.defineClass(Unknown Source)
>  at java.net.URLClassLoader.defineClass(Unknown Source)
>  at java.net.URLClassLoader.access$100(Unknown Source)
>  at java.net.URLClassLoader$1.run(Unknown Source)
>  at java.security.AccessController.doPrivileged(Native Method)
>  at java.net.URLClassLoader.findClass(Unknown Source)
> Feb 10, 2011 6:50:31 PM org.aspectj.weaver.tools.Jdk14Trace info
> INFO: Dumping to
> C:\Sonic\Workbench7.5\eclipse\.\ajcore.20110210.185031.884.txt
> _______________________________________________
> aspectj-users mailing list
> aspectj-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>
>


Back to the top