Ferenc, Thank you for reporting the problem. Could you please let me know what OS and JVM version you use to run Xindice (please include all the information "java -version" reports)?
I'll investigate the problem. Regards, Natalia 2009/10/21 Ferenc Pápai <fpa...@gmail.com>: > > > Hi > > I think I discovered a memory leak while an XPath query is executed using > Xindice 1.2 dev svn revision number 821662. > > I only had to run a query that generated a sufficiently large number of > results. > > After some debugging I discovered that in class XPathQueryResolver.ResultSet > the XPathResolverContext member variable is cached now as opposed to as it > was in its previous version. > This is probably for performance reasons. > > This class XPathResolverContext has internally a DTMManager implementation. > As ResultSet.prepareNextNode method is called many times (while one query is > executed), the DTMManager instance will grow and grow in size until JVM > runs out of memory. > > Calling XPathResolverContext .reset() in ResultSet.prepareNextNode would > solve this problem but it would be against the intent of optimizing the > code. > > > I am not familiar yet with Xalan's DTM API to provide a proper solution. So > i am just speculating here: > Internally DTMManager caches DTM objects generated while it executed the > query on a given context. These DTMs consume the memory. > I think these are cached to be reused by the two-way iterators provided by > DTMManager. > However in Xindice, the Collection API provides the NodeSet as forward only > iterator, thus no DTM caching is need for Xindice. ? > > > regards, > Ferenc > > > > > > > > >