you also have to distinguish between: 

1.) classpath scanning time itself
2.) information extraction from the scanned classes

As a whole container, we can reduce 1.) because this part could be shared 
between OpenEJB, OpenWebBeans, Tomcat, MyFaces, etc (all libs which do 
classpathscanning on their own currently). A few weeks back I dropped a 
classscanner proposal to the commons list. 

A rudimentarily working example is on my github [1] though there is lots of 
work needed in the filtering part still.

The fundamental idea is that once the first 'classscan-client' requests a 
scanning result, the 'classscan-server' will load all registerd 
'classscan-clients' and will ask them what they need to scan for (marker files, 
which annotations, etc). Then it will do all the scan (via davids xbean-finder) 
in 1 go and afterwards the 'classscan-clients' can get the result of the scan 
which they requested. If a 'classcan-client' doesn't need the information 
anymore (all needed info stored into internal data structures after the bootup 
for example), it can unregister() itself so the classscan-server can free the 
memory.

a.) first benefit is that we only do one physical class scan and bytecode 
parsing -> safes time
b.) most libraries use Class.getAnnotations() Method.getAnnotations(), etc 
which fill up the PermGenSpace heavily (and permanently) because there are no 
methods in the ClassLoader to drop this information later. If we just store 
this info in standard Maps (via xbean-finder), then we can just clear the maps 
and release the memory once it's not needed anymore


LieGrue,
strub

[1] https://github.com/struberg/Apache-commons-classscanner



----- Original Message -----
> From: Romain Manni-Bucau <[email protected]>
> To: [email protected]
> Cc: 
> Sent: Thursday, October 20, 2011 10:43 PM
> Subject: openejb jrat
> 
> Hi,
> 
> following the start up time of openejb i wondered where we were loosing time
> exactly (even if scanning seems to be a good candidate),
> 
> to have results just extract the zip, run start.sh (or something similar,
> there is only one line in the script ;)) and when the window is opened open
> the file openejb.jrat). Then go to hierarchy tab and you'll...that 60% of
> the startup time is due to scanning.
> 
> here are the info: http://people.apache.org/~rmannibucau/jrat.output.zip
> 
> 
> - Romain
>

Reply via email to