On Apr 22, 2009, at 6:58 AM, Bill Stoddard wrote:
David Jencks wrote:
On Apr 15, 2009, at 10:42 PM, David Jencks wrote:
I've been assuming that the classloader work Gianny and I have
been working on in my sandbox would get into 2.2. At the moment I
think I have the classloader framework more or less working and
I'm going through the plugins working on setting up the required
jar dependencies. Only some of them can be derived from maven
dependencies. This is turning out to be a somewhat slow process.
I finally got the server to run with the one-classloader-per-jar
setup. After struggling with this for a couple of weeks and seeing
the difficultly of correctly configuring classloaders I don't
think we should put this into 2.2. For one thing classloading
seems to be pretty slow: it takes about 55 seconds to start the
jetty-jee5 server.
55 seconds to start... that's really bad in comparison to the
server today. The full Tomcat JEE5 assembly on my MBP will start in
something like 20 seconds.. a minimal assembly under 10 seconds.
I've been seeing reports that JBoss 5 is slow and bloated compared
to earlier releases... seems to be the natural evolution of app
servers.
Is the performane hit related to the design (classloader per jar) or
something in how the design is implemented?
I had enough trouble getting the server to start.... I haven't done
any profiling to find out what the slowdown is actually caused by. I
assume that its because the classloader graph is now about 4 to 8
times larger and has a lot of duplication in it and no optimization.
I heard a rumor somewhere once that in order to perform well osgi
classloading needs indexing so a classloader knows where to look for a
class it doesn't load itself. I imagine we now have exactly the same
problem. I expect that with a bit of work -- such as actually using
osgi -- classloading will be at least as fast as it was before these
changes.
david jencks
Bill