[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