Hi Timothy,

I tried several values of IDENT_DTM_NODE_BITS (always recompiling all files). 
The Problem was, that with IDENT_DTM_NODE_BITS = 8 I got an "Out of memory 
error" instead "no more DTM IDs available". After changing the 
DEFAULT_BLOCKSIZE to 64 this error was gone too. 

I'm not sure, but maybe this kind of xslt code is the problem:

        <xsl:key name="PropertyIndex" match="Property_value" use="@id"/>        
        ...
      <xsl:variable name="Properties" select="key('PropertyIndex', 
str:tokenize(Simple_property_association/Specified_value, ' '))"/>

The template using the variable "Properties" is called about 100000 times.

Any ideas?


Ciao,
Karsten






 
 

> -----Ursprüngliche Nachricht-----
> Von: Timothy Jones [mailto:[EMAIL PROTECTED] 
> Gesendet: Donnerstag, 6. April 2006 15:37
> An: Theis, Karsten; [email protected]
> Betreff: RE: "Best practice" for setting IDENT_DTM_NODE_BITS 
> and DEFAULT_BLOCKSIZE
> 
> Hi Karsten,
> 
> I had a similar problem (transforming large DOMs built in 
> memory, not read from disk), and that solution works for me 
> also.  However, I did not find it necessary to change 
> DEFAULT_BLOCKSIZE (indeed, I didn't even know about that 
> constant until your post).
> 
> When I asked about making IDENT_DTM_NODE_BITS a configurable 
> item (via system property, etc), I was told that the system 
> shouldn't run out of DTM_IDs anymore, and therefore I should 
> not have had to make the change.
> There is a comment in the code that says it is a compile-time 
> setting, so you must make sure you build ALL of xalan.jar 
> after modifying this constant (you have probably read that 
> already).  My understanding is that because 
> IDENT_DTM_NODE_BITS is a final int, the compiler copies the 
> value into other xalan classes.  Of course, you could make it 
> non-final (modifiable), but then you lose the speed that 
> comes with it being a final int.  I would wonder how much of 
> a hit making it non-final would really be.
> 
> Unfortunately, I haven't had time to put together a test case 
> to "prove"
> that the problem still exists.
> 
> 
> 
> tlj
> 
> Timothy Jones - Sr. Systems Engineer, Development
> (813) 637-5366 - Syniverse Technologies
> There are 10 types of people in the world: 
> Those that understand binary and those that don't.
>  
> 
> 
> -----Original Message-----
> From: Theis, Karsten [mailto:[EMAIL PROTECTED] 
> Sent: Thursday, April 06, 2006 3:31 AM
> To: [email protected]
> Subject: "Best practice" for setting IDENT_DTM_NODE_BITS and
> DEFAULT_BLOCKSIZE
> 
> 
> Hi,
> 
> I'va had trouble with "no more DTM IDs available" while transforming
> very large XMl documents (> 200 MB). 
>       
> I found a solution by changing IDENT_DTM_NODE_BITS to 8 (in
> com.prostep.xml.dtm.DTMManager).
> 
> After this change I got an "out of memory error", and I changed
> DEFAULT_BLOCKSIZE to 64 (in com.prostep.xml.dtm.ref.DTMDefaultBase).
> 
> Now it works fine and the performance has increased dramatically. 
> (I think the problem was, that i use str:tokenize very often, and this
> consumes DTM Ids, but I'm not sure.)
> 
> 
> Now my question:
> Is there a a "Best practice" for setting the XALAN constants? 
> 
> 
> Thanks,
> Karsten
> 
> 

Reply via email to