【问题标题】:What would be a normal size of org.hibernate.impl.SessionFactoryImpl objects ?org.hibernate.impl.SessionFactoryImpl 对象的正常大小是多少?
【发布时间】:2015-07-30 02:57:39
【问题描述】:

我正在使用 Spring / Hibernate 开发一个 Web 应用程序,经过几天的生产它变得非常慢,所以我使用 visualvm 做了一个堆转储,但我不太了解如何分析结果,我什至不知道知道在类似的开发堆栈中org.hibernate.impl.SessionFactoryImpl 的正常大小是多少,有人可以根据屏幕截图告诉我吗,我想提一下我使用一个 Web 客户端(一个用户登录)

【问题讨论】:

  • 作为比较,对于 Hibernate 5.0 上的约 180 个实体,我的 SessionFactoryImpl 大约为 30MB。所以 1.7MB 对我来说似乎不是太大 ;) Hibernate 5.2 和 5.3 似乎改善了它们的内存消耗

标签: java hibernate tomcat memory-leaks heap-dump


【解决方案1】:

对象的“正常”大小取决于很多因素(您使用的库版本、JVM 和操作系统版本...)

您可以找到有关浅尺寸和保留尺寸的更多信息here

我认为 SessionFactoryImpl 在你的情况下不是太大(只有 1.7 MB 的保留大小)并且不是问题的原因。

但是,较小的堆大小可能会成为问题,因此请尝试分析应用是否使用了大部分堆空间并相应增加。

【讨论】:

  • 我在开发机器上使用与服务器相同的配置,但只有一个用户登录
  • 配置的最大堆大小是多少?您必须在发生减速时检查内存。您可以使用 visualvm 或其他分析工具来完成。网上有很多关于如何做到这一点的教程,而且我相信很多关于 SOF 的问题都是专门针对它的。
  • 在我的开发机器上,堆大小为 1 046 478 848 B 和 101 317 648 B 已使用我从服务器(生产)转储了相同的数据库,用于存储我从 visualvm 复制过去的内存值跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-24
  • 2014-07-02
  • 1970-01-01
  • 2014-08-13
  • 2012-11-01
  • 2021-09-22
相关资源
最近更新 更多