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 used transiently within the serialization pipeline - but that would be a fairly major undertaking and it's not clear how much benefit it would have.