Hi,
We are running our application (tomcat with number of jsps) with LTW
enabled.
-javaagent:$CATALINA_HOME/lib/aspectjweaver-1.7.1.jar
While analyzing heap dump we found that aspectj objects
(org.aspectj.*) are consuming 109M of memory. That was to the
surprise since no crosscuts were actually enabled.
<aspectj>
<weaver options="-showWeaveInfo -nowarn">
</weaver>
<aspects>
</aspects>
</aspectj>
I am fairly new to aspectj, but it looks that there is a weaving
adapter per calssloader held in memory through weak map
<Loader->World>. Each adaptor is not too bad (including
referenced objects) around 30K. But in case of jsp new class loader
instance (JasperLoader) gets created per every jsp loaded so we end
up with 2K of weaving adaptors responsible for 100M of memory in
total. It looks bad considering that aspectj is pretty much not used
at all.
The overhead of 30K per jsp is quite significant in our case. Is it
a known feature or limitation of using aspectj in a web application?
Is any workaround available?
Any suggestion, thought or recommendation is very welcomed.
Thanks,
Sergei
This e-mail message and all attachments transmitted with it may contain privileged and/or confidential information intended solely for the use of the addressee(s). If the reader of this message is not the intended recipient, you are hereby notified that any reading, dissemination, distribution, copying, forwarding or other use of this message or its attachments is strictly prohibited. If you have received this message in error, please notify the sender immediately and delete this message, all attachments and all copies and backups thereof.
|