Each kbase has it's own root classloader, and then an additional child classloader per package in the kbase.
Mark On 07/05/2010 22:08, malkhafaji wrote: > Hello, > > I noticed (using JConsole) that my application keeps loading more and more > classes. I have over 105K classes loaded! I did a lot of debugging and > isolation until I found the line that brings the number of classes loaded > from 20K to 105K. It is this line: > > this.knowledgeBase.addKnowledgePackages(packages); > > packages is an array list of 8 DRLs that are compiled successfully. I am > calling the line above exactly 99 times. However, I do have 99 instances of > this.knowledgeBase. So, I have a total of 99 instances of "knowledgeBase", > and each instance is called once (line above) with 8 successfully compiled > DRLs. > > I am starting to think that each instance of a KnowledgeBase somehow uses > its own Classloader? Do I need to manually get the current application > Classloader and pass it on to each instance of KnowledgeBase to ensure that > no classes are loaded more than once? Is this a leak in the Classloader that > comes inside the KnowledgeBase.addKnowledgePackage method? I did post > somewhere else about delays on the line above, and no wonder it sometimes > takes a couple of seconds to execute that line (the largest rules file I > have is 150 KB with no more than 100 rules) if it creates a new Classloader > and loads the same loaded classes AGAIN. Any insights on this? > > P.S. I did a search on the forum and couldn't find anything related to this. > If you have better searching skills and found a post in that regards, please > kindly point me to it. This is a very important issue as we are going to a > live production environment in 3 weeks and I am not too happy with the > performance, specifically around the line above. > > Thank you, and have a great weekend. > _______________________________________________ rules-users mailing list [email protected] https://lists.jboss.org/mailman/listinfo/rules-users
