|
|
@@ -0,0 +1,104 @@ |
|
|
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> |
|
|
|
<html> <head> |
|
|
|
<title>AspectJ 5 Development Kit v1.5.3 Readme</title> |
|
|
|
<style type="text/css"> |
|
|
|
<!-- |
|
|
|
P { margin-left: 20px; } |
|
|
|
PRE { margin-left: 20px; } |
|
|
|
LI { margin-left: 20px; } |
|
|
|
H4 { margin-left: 20px; } |
|
|
|
H3 { margin-left: 10px; } |
|
|
|
--> |
|
|
|
</style> |
|
|
|
</head> |
|
|
|
|
|
|
|
<body> |
|
|
|
<div align="right"><small> |
|
|
|
© Copyright 2006 Contributors. |
|
|
|
All rights reserved. |
|
|
|
</small></div> |
|
|
|
|
|
|
|
<h1>AspectJ 5 v1.5.3 Readme</h1> |
|
|
|
|
|
|
|
<p>This release includes a number of bug fixes and a few enhancements (over 80). The full list of resolved issues can be found with |
|
|
|
<a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&product=AspectJ&target_milestone=1.5.3&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0="> |
|
|
|
this bugzilla query</a>. |
|
|
|
</p> |
|
|
|
<p> |
|
|
|
Notable changes since the 1.5.2 release include: |
|
|
|
<br> |
|
|
|
|
|
|
|
<h2>Pipeline compilation - <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=146781">146781</a></h2> |
|
|
|
<p>Until this release, the memory profile for AspectJ looked like this (time is along the X axis, memory usage is the Y axis)</p> |
|
|
|
|
|
|
|
<code><pre> |
|
|
|
/\_ |
|
|
|
/ \_ |
|
|
|
/ \_ |
|
|
|
/ \_ |
|
|
|
/ \_ |
|
|
|
/ \ |
|
|
|
</pre></code> |
|
|
|
<p> |
|
|
|
The first phase (as we go up and up and up) is the compilation of every file - when the peak is reached we then start weaving files one by one, discarding them once woven and dumped to disk. |
|
|
|
|
|
|
|
In 1.5.3 we don't compile everything up front - we compile and weave files one at a time. Giving us this profile: |
|
|
|
</p> |
|
|
|
<code><pre> |
|
|
|
/\ /\ /\ |
|
|
|
/ \/ \/ \ |
|
|
|
/ \ |
|
|
|
</pre></code> |
|
|
|
<p> |
|
|
|
Each peak is compiling a file, then it is woven, dumped to disk and the space recovered (the trough) - we then move onto the next file. |
|
|
|
|
|
|
|
What does this mean? The peaks are far far lower, so you need far less memory to compile a project. For example, I have a 1000file project, affected by aspects at >750 join points. |
|
|
|
|
|
|
|
For given values of Xmx, here are the times taken to compile it (on the command line) with AspectJ1.5.2:</p> |
|
|
|
<pre><code> |
|
|
|
Xmx Time |
|
|
|
512M 33seconds |
|
|
|
256M 40seconds |
|
|
|
220M 116seconds |
|
|
|
212M OutOfMemory |
|
|
|
</pre></code> |
|
|
|
|
|
|
|
<p>The times gradually increase as the memory is reduced as the VM is thrashing in garbage collection. |
|
|
|
|
|
|
|
Here are the results for AspectJ1.5.3:</p> |
|
|
|
<pre><code> |
|
|
|
Xmx Time |
|
|
|
512M 33s |
|
|
|
256M 33s |
|
|
|
180M 33s |
|
|
|
140M 33s |
|
|
|
100M 35s |
|
|
|
80M 43s |
|
|
|
70M OutOfMemory |
|
|
|
</pre></code> |
|
|
|
|
|
|
|
<p>So with 1.5.3, it isn't until around 80M that the VM starts to struggle with memory. These savings will affect any code built from source: on the command line, in Ant, |
|
|
|
or in AJDT. It will not affect binary weaving - that is a future enhancement.</p> |
|
|
|
|
|
|
|
|
|
|
|
<h2>Serviceability - <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=150487">150487</a></h2> |
|
|
|
<p>As AspectJ grows in popularity, we find that it is becoming more difficult for users to come up with the small testcases |
|
|
|
that recreate problems - the usage scenarios for AJ are becoming more and more sophisticated. To help us work on |
|
|
|
problems in these scenarios we have added a tracing and logging framework and improved our dump mechanism. These traces and |
|
|
|
dumps can be attached to bug reports. In AspectJ 1.5.3 we have included |
|
|
|
some <a href="http://www.eclipse.org/aspectj/doc/released/pdguide/index.html">documentation</a> on how to configure these new features. Don't be surprised if you get asked |
|
|
|
for an AspectJ trace on a future bug report! |
|
|
|
</p> |
|
|
|
|
|
|
|
<h2>LTW enhancements</h2> |
|
|
|
|
|
|
|
<p><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=132080">132080</a> describes how the |
|
|
|
concrete aspects that can be defined in aop.xml are now exposed for weaving.</p> |
|
|
|
<p><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=149289">149289</a> |
|
|
|
|
|
|
|
</p> |
|
|
|
|
|
|
|
<p>For information on bug fixes in AspectJ 5 v1.5.3, see the <a href="changes.html"> changes</a> document.</p> |
|
|
|
|
|
|
|
</body> |
|
|
|
</html> |