java-如何减少Hibernate SessionFactory的内存使用和加载时间

我有大约3000个实体类的应用程序.

由于存在大量的类,因此SessionFactory对象将消耗约150 MB的内存,并且几乎要花一分钟的时间来设置(处理所有类,生成代理并构建元模型).
在对该过程进行概要分析之后,我发现一分钟的时间花在org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory中,而一半的时间花在org.hibernate.tuple.entity.AbstractEntityTuplizer.< init>(EntityMetamodel,PersistentClass)中.
我正在寻找减少SessionFactory内存使用和加载时间的方法.
一种想法是将类增强功能转移到编译时,但是我没有找到太多有关它的信息.
实体的数量是我无法更改的事实,但是如果有人对如何处理其数据库访问有更好的想法(Hibernate除外),我将很乐意听到.

解决方法:

首先查看SessionFactory内部发生的情况. Hibernate提供了一个JMX连接器,请参见documentation here.然后您就可以开始研究热点以及如何重构它们.您确实需要从收集更多指标开始.目前可能是任何问题,包括GC问题.

上一篇:Java-高吞吐量事务处理策略


下一篇:java-多线程性能