Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] AJDT memory usage

On 19 July 2010 23:48, Emond Papegaaij <emond.papegaaij@xxxxxxxxxx> wrote:
> I wonder, what does the AspectJ compiler need all that information for?
> Currently, it seems it stores a complete representation of the classes in the
> typeMap, including all constantpool entries. Isn't it possible to drop part of
> this information, for example information like the LineNumberTable and
> LocalVariableTable or maybe even string constants? Although these structures
> are not really large, it could save another 100M, especially when you also
> drop the constant pool entries used by these tables.

Indeed it keeps a lot of information, that is partly due to the
initial design of AspectJ never taking into account large projects or
even incremental compilation.  Over time areas of the compiler are
revisited over and over as we gradually improve things.  (the original
AspectJ didn't allow you to compile more than one project in the same
JVM, imagine how that would work in eclipse - you'd only be allowed
one AspectJ project in your workspace).  My list of tasks is quite
large and I get to things when I can...

The linenumbertables and localvariabletables and code elements cannot
all be dropped, for example if inlining around advice we want that
information for the target, so it isn't as easy as throwing everything
out.  And when incrementally compiling we need to recover state
because we won't be recompiling everything, only part of the
application, and that will have dependencies on what we did
previously.  Recovering out of the bin folder where we previously
compiled to is part of the solution but sometimes we want the interim
form, the shape of the class after compilation and before weaving, and
that form of the class is not always available from disk.

I know what to do, I just have to find the time.

Andy


Back to the top