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?

I bumped it up to Xmx512m, but that still got the OOM error.  I went up to Xmx768m, and now there is no error, just a 45-second delay for the first invocation to complete.

Can I skip this long delay by adding !within(groovy) to all my pointcuts, or is there a better way?

Thanks,
Lee

-----Original Message-----
From: aspectj-users-bounces@xxxxxxxxxxx [mailto:aspectj-users-bounces@xxxxxxxxxxx] On Behalf Of Andy Clement
Sent: Thursday, February 10, 2011 7:25 PM
To: aspectj-users@xxxxxxxxxxx
Subject: 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.ja
> va: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:78
> 1)
>  at org.aspectj.weaver.bcel.BcelWeaver.weave(BcelWeaver.java:1703)
>  at
> org.aspectj.weaver.bcel.BcelWeaver.weaveWithoutDump(BcelWeaver.java:16
> 18)
>  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.j
> ava: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(Cl
> assPreProcessorAgentAdapter.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
>
>
_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/aspectj-users


Back to the top