Hi Scott,
It sounds like adding <property
name="javax.persistence.validation.mode" value="NONE"/>, is
responsible for the memory savings, more than using Hibernate Validator 4.3.0. If not, it
would be helpful for us to know that.
I wouldn't expect much more savings than that (with validation mode set to NONE, we
won't pass a validator instance into the session factory).
Hibernate Validator 4.3.0 was responsible for memory saving not the property.
If your using MAT, I would drill into the "outgoing" references from the
org.hibernate.internal.SessionFactoryImpl and produce more pictures of the objects
consuming the larger part of that memory.
I already done it. But the problem is that if I make side by side comparison
between memory dumps from JBoss 4 and JBoss 7 I don't see a big difference. :-(
Only the size of SessionFactoryImpl differs.
Also, it might be helpful for us to see your persistence.xml.
No problem. Here it is:
<persistence-unit name="MyEntityManager">
<jta-data-source>java:/MyDS</jta-data-source>
<properties>
<property name="hibernate.dialect"
value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
<property name="hibernate.max_fetch_depth"
value="0"/>
<property name="hibernate.default_batch_fetch_size"
value="16"/>
<property name="hibernate.order_updates"
value="true"/>
<property name="hibernate.order_inserts"
value="true"/>
<property name="hibernate.jdbc.fetch_size"
value="50"/>
<property name="hibernate.jdbc.batch_size"
value="15"/>
<property name="hibernate.jdbc.wrap_result_sets"
value="false"/>
<property name="hibernate.query.jpaql_strict_compliance"
value="false"/>
<property name="hibernate.ejb.interceptor"
value="MyInterceptor"/>
<!-- Hibernate Search Properties -->
<property name="hibernate.search.lucene_version"
value="LUCENE_35"/>
<property name="hibernate.search.default.directory_provider"
value="MyFSDirectoryProvider"/>
<property name="hibernate.search.worker.scope"
value="MyTransactionalWorker"/>
<property name="hibernate.search.enable_dirty_check"
value="false"/>
<property name="hibernate.search.worker.batch_size"
value="100"/>
<property
name="hibernate.search.default.transaction.merge_factor"
value="10"/>
<property
name="hibernate.search.default.transaction.max_buffered_docs"
value="10"/>
<property name="hibernate.search.default.batch.merge_factor"
value="100"/>
<property name="hibernate.search.default.batch.max_buffered_docs"
value="100"/>
<property name="hibernate.search.​default.​exclusive_index_use"
value="false"/>
<property name="hibernate.search.default.reader.strategy"
value="not-shared"/>
<!-- Hibernate Validation -->
<property name="javax.persistence.validation.mode"
value="NONE"/>
</properties>
</persistence-unit>
Best regards,
Andrej Golovnin