Looking at the AJDT event trace it seems to me that everything is in order. It starts with (just one time after opening the project as it is supposed to):
After a small local change in a source file + save:
Compiler configuration for project rootestproject doesn't know previous state, so assuming EVERYTHING has changed.
After that another build is done, which is the first incremental build. Then, a third build is started but no changes are found and the build exits.
Build kind = AUTOBUILD
kind of build requested=Incremental AspectJ compilation
Preparing for build: not going to be incremental because no successful previous full build
AspectJ reports build successful, build was: INCREMENTAL
Timer event: 11733ms: Total time spent in AJBuilder.build()
This all seems ok, and at this point the performance still is ok, might be a memory problem after all. The trace seems also ok when changing a public method name and other files need to be recompiled. One or two incremental builds are run plus another one that exits due to an empty delta.
What happens if I save a file with errors (I do press cmd+s a lot)? Andy indicated in his answer on another question by me that this might cause problems. That sounds reasonable to me, especially when Roo deletes its ".aj" files in the background due to a broken ".java" source.
Also: Is it "normal" that an out-of-the-box STS 2.3.0 takes up 900MB of memory shortly after starting with one small Roo project (AspectJ) and only one source file opened? As I already mentioned this goes up to 1.6GB easily and might go even higher (no more memory available). I do have about 10 files open at a time.