diff options
author | Stefan Starke <stefan@starkeweb.org> | 2019-10-08 13:27:41 +0200 |
---|---|---|
committer | Andy Clement <aclement@pivotal.io> | 2022-01-13 15:07:30 -0800 |
commit | 0e58847d8d341b70734576aa813f755d9a716a18 (patch) | |
tree | 393edd496668ea365780412d10b40e94ee7ac963 /weaver/ajsrc/org | |
parent | 1b3cead1715cd4f233d81c88ba7a33dc1aa59886 (diff) | |
download | aspectj-0e58847d8d341b70734576aa813f755d9a716a18.tar.gz aspectj-0e58847d8d341b70734576aa813f755d9a716a18.zip |
Optimize class loading
In our project we found out that during the build up of the spring context
the class loading takes a very long time.
Root cause is the huge amount of file I/O during pointcut class loading.
We are taking about ~250k file loads.
With these changes we managed to cut down the starting time by around 50%.
What we found out is that IMHO - the clear method of the ClassLoaderRepository
is called far too often -> in our settings this resulted in not a single cache
hit as the cache got cleared permanently.
Therefore we de-actived the cache clear calls inside the ClassLoaderRepository.
Secondly we changed the Java15AnnotationFinder in a way to not always create
new objects for the ClassLoaderRepository but re-use one static instance.
Otherwise we experienced >100k objects being created.
Last but not least we introduced a cache for unavailable classes so that
they do not have to be looked up using file I/O over and over again.
The whole behavior is configurable via
+ org.aspectj.apache.bcel.useSingleRepositoryInstance (default: true)
+ org.aspectj.apache.bcel.useUnavailableClassesCache (default: true)
+ org.aspectj.apache.bcel.ignoreCacheClearRequests (default: true)
Signed-off-by: Stefan Starke <stefan@starkeweb.org>
Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
Diffstat (limited to 'weaver/ajsrc/org')
0 files changed, 0 insertions, 0 deletions