Profiling with AspectJ

David J. Pearce, Matthew Webster, Robert Berry, Paul H.J. Kelly

Research output: Contribution to journalArticlepeer-review


This paper investigates whether AspectJ can be used for efficient profiling of Java programs. Profiling differs from other applications of AOP (e.g. tracing), since it necessitates efficient and often complex interactions with the target program. As such, it was uncertain whether AspectJ could achieve this goal. Therefore, we investigate four common profiling problems (heap usage, object lifetime, wasted time and time-spent) and report on how well AspectJ handles them. For each, we provide an efficient implementation, discuss any trade-offs or limitations and present the results of an experimental evaluation into the costs of using it. Our conclusions are mixed. On the one hand, we find that AspectJ is sufficiently expressive to describe the four profiling problems and reasonably efficient in most cases. On the other hand, we find several limitations with the current AspectJ implementation that severely hamper its suitability for profiling. Copyright © 2006 John Wiley & Sons, Ltd.
Original languageEnglish
Pages (from-to)747-777
Number of pages31
JournalSoftware practice and experience
Issue number7
Early online date23 Nov 2006
Publication statusPublished - 1 Jun 2007


  • AspectJ
  • AOP
  • JAVA
  • profiling
  • performance


Dive into the research topics of 'Profiling with AspectJ'. Together they form a unique fingerprint.

Cite this