I have been printing out the statistics and after running most bits of the system on my local application, which has a smallish generated data set, I got it up to the following after about 10 mins of clicking around:
NamePool contents: 3012 entries in 927 chains. 34 prefixes, 33 URIs
Is it the chains size that causes the Exception when any one gets full? When will it start to degrade performance or die?
I think the large number of uri is from calls to java functions.
I also did a few full dumps and did notice the current726527 typed names, so I am going to remove all usage of current(), I never really liked it anyway.
1) POSTED data from dynamic form. IE the user has designed their own form eg ‘company’ and ‘location’ in example below.
That doesn't look as bad as I thought - names being invented by users isn't quite the same as names being generated at random.
Firstly just to make sure that the problem is the dynamic fields, and not our already large(ish) element set (SOAP, XHTML, FO, XSLT, LHS) is there any way that I can dump the full names from the NamePool?
Yes, there's a method diagnosticDump() on the NamePool object (which you can find via the Configuration). It's worth checking this because there are other possible causes, for example there's a known problem in 8.9 with the use of the current() function causing names to be generated (and these really are random).
Performance so far has been good, is there a way that we could increase the NamePool size or for the NamePool to start recycling allocations for rarely used names?
The limits are based on the number of bits available in a word, so they're pretty inflexible! It's difficult to free any allocations because there's no way of telling whether a given integer code is still in use in some compiled stylesheet or in-memory document. One could try to allocate a part of the code space to names usedtransiently within the serialization pipeline - but that would be a fairly major undertaking and it's not clear how much benefit it would have.
Limehouse Software Ltd
DDI: (020) 7566 3336
Main: (020) 7566 3320
Fax: (020) 7566 3321
Limehouse Software Ltd
1 London Bridge
www.limehousesoftware.co.uk - Unifying Information
The information contained in this e-mail or in any attachments is confidential and is intended solely for the named addressee only. Access to this e-mail by anyone else is unauthorised. If you are not the intended recipient, please notify Limehouse Software Ltd immediately by returning this e-mail to sender or calling 020 7566 3320 and do not read, use or disseminate the information. Opinions expressed in this e-mail are those of the sender and not necessarily the company. Although an active anti-virus policy is operated, the company accepts no liability for any damage caused by any virus transmitted by this e-mail, including any attachments.
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.5.488 / Virus Database: 269.15.8/1089 - Release Date: 23/10/2007 19:39