[hibernate-dev] Memory consumption

Andrej Golovnin golovnin at gmx.net
Wed May 16 16:14:06 EDT 2012


Hi Scott,

> 
> Nice find!  Could you drill into one of the LockMode loaders and see what the larger objects referenced by that are?
> 

Largest objects are of type BatchingEntityLoader.

The problem has to do with the value of hibernate.default_batch_fetch_size.
In our case we use 16 as the value. In this case Hibernate creates 11 EntityLoaders
for every entity class involved in a collection association. So the most memory
is consumed by generated SQL statements. If I compare memory snapshots,
I see ca. 100MB more of String objects  in JBoss 7 as in JBoss 4.

Changing the value of hibernate.default_batch_fetch_size from 16 to 4
reduces the size of SessionFactoryImpl in our case from ca. 370MB to 180MB.
And if I use patched version of Hibernate as suggested by me, the size of 
SessionFactoryImpl is ca. 80MB. So we will now investigate, wether it is 
really needed to set hibernate.default_batch_fetch_size to 16 or maybe
the lower value would also give us decent performance.

Best regards
Andrej Golovnin


More information about the hibernate-dev mailing list