Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] Memory consumption problems

Hi Tim,

I'll grab those files when I can (rapidshare isn't playing ball right
now).  1.6.7 dumps are what I need, too much has changed since 1.6.2
so they wouldn't be as much help.

> I did, and the heap size even increased compared to a version of 1.6.6.
> The Full GC issues we're having right now are with version 1.6.2.

The changes for 1.6.7 may increase some temporary memory usage but all
the newly cached 'stuff' is only reachable via weak references and so
collectable whenever the system needs the memory.  At least that is
how I see it all behaving in my test setup (tomcat plus SpringTravel
web application - the spring aspect library is in the mix too).

> What are ITD's?

Intertype declarations, sometimes called static crosscutting (where
advice/pointcuts are dynamic crosscutting).  For example:

aspect X {
  int Foo.x  // create a new field in Foo called 'x'
  int Foo.m() { return 42; } // create a new method in Foo returning an int
}

> For one module we're just using @Configurable and Spring aspects on domain
> classes.
> For another module we have aspects for logging and accounting and stuff.
> We can see the symptoms when we just deploy the module with @Configurable
> already.
> It just gets worse when other modules are deployed (because this just means
> more classes to be contained in the World map I think)

Certainly as more gets woven, more will make it into the world, but it
should all be garbage collectable.  It can depend how your VM treats
references - I see a lot of variation.  In my testing I attach a
jconsole/yourkit and keep battering 'Run GC' until I finally see them
all going, but that can take up to a minute or 30/40 GCs (stupid
thing).  However, if you say the heap is showing them anchored from
the root then something else must be up. I'll take a look.

Did you think you did or did not want to weave the JSPs? I'm still
toying with adding the necessary options to prevent weavers for
certain types of classloader.

Andy


Back to the top