【问题标题】:Spring too high memory usageSpring内存使用率过高
【发布时间】:2014-02-26 16:44:24
【问题描述】:

我有一个结合了 Spring + Hibernate 的 webapp。我将它本地部署在 Tomcat 服务器中,我得到大约 150-200 Mb 的内存消耗,据我所知,这根本不是那么高。但显然在 WebSphere 上运行的生产部署中,我得到了 500Mb 的内存使用量和非常高的垃圾收集频率。

起初我将问题归咎于 Hibernate(如 this other question 中所见),但现在我不知道是什么导致了这种明显的高使用率。

我尝试使用 MAT 分析我的应用,这些是我的直方图结果:

我在分析内存方面没有太多经验,而且大多数时候我感觉好像我在看汽车的引擎发生故障后,但在我看来,char[] 引用与 spring 的内部“ bean 的数据库”。我对 spring 的 mvc 组件和事务使用基于注释的配置:

<tx:annotation-driven />
<context:annotation-config />

您是否发现其中任何一个值非常高?你能帮我追查问题吗?

PS。这是我的堆转储接近满堆的支配者

【问题讨论】:

  • 这些数字对我来说并不太高,例如如果 4.5 MB 保留堆占整个堆的 18.41%,则您只使用 25 MB 堆。这在我看来并不多。您确定您分析了正确的转储吗?您应该在堆快满时(或在 OutOfMemoryError 上)创建一个并分析它。
  • (a) 这不是编程问题。 (b) 除非您的生产环境与您的本地环境完全相同,否则您不应期望内存使用情况相同。你真的看到问题了吗?垃圾回收是正常现象,并不表示内存泄漏。
  • @TedBigham 这是很正常的事情,但如果发生得太频繁就不会了。也许内存泄漏不是正确的称呼方式,也许我应该说“高内存消耗”
  • @kelmer,内存泄漏是永远不会被垃圾回收的内存。所以垃圾收集器运行很多,几乎与内存泄漏完全相反。
  • @Thomas 我发布了另一张图片,其中有一棵靠近满堆​​的垃圾场支配树

标签: java spring hibernate spring-mvc memory-leaks


【解决方案1】:

你的两个问题(通常)都是正常的。

运行的垃圾收集器通常表明您正在进行大量处理,尤其是创建大量对象的那种(如 jdbc)。除非您的服务器在垃圾收集期间变得无响应,否则无需担心。如果垃圾回收后它没有返回到基线内存(锯齿形内存图的底部),则可能存在泄漏。

高内存使用也是正常的,尤其是当您为生产 JVM 分配的内存比本地 JVM 更多时。比较您的启动参数并确保它们相同,然后再尝试比较它们的性能结果。

[我知道这不是一个真正的答案,但它太长了,不适合 cmets]

【讨论】:

    【解决方案2】:

    您确实意识到(除非您使用 Liberty Profile)与 Tomcat 相比,WebSphere 会在您的类路径中堆积大量额外的 jar 文件?因此,在 WebSphere 下,内存占用绝对会大得多。

    过多的垃圾回收意味着您没有为应用程序 JVM 分配足够的内存。给它更多(例如 2 gig)并通过 JConsole 或类似工具观察运行时内存使用图。在更轻松的垃圾收集之前观察它达到的内存消耗,并用它来了解 JVM 真正需要多少。

    请注意,如果在每次垃圾回收后,图表都没有返回到安全基线,而是仅部分减少,那么您可能存在内存泄漏。

    【讨论】:

      【解决方案3】:

      我发现每个渲染页面确实有很高的内存消耗,并且已将问题定位到 Apache Tiles。如果我使用 Tiles,每个页面加载都会给堆带来高达 30 mb 的内存使用量,这确实感觉很多。禁用它几乎不会导致内存消耗。

      调试控制器方法表明,在方法本身内几乎没有内存消耗,但是当 30mb 内存使用触发时,它是在将控制权返回给 viewresolver 时(即在控制器方法结束后)。

      现在的问题是,如何减少这种内存使用量??

      【讨论】:

      • 我的所有资源(即使是静态资源,例如图像、脚本...)都由 FrameworkServlet 处理是否正常?
      猜你喜欢
      • 1970-01-01
      • 2019-07-29
      • 2012-05-31
      • 1970-01-01
      • 2011-03-31
      • 1970-01-01
      • 2011-05-15
      • 1970-01-01
      • 2011-09-19
      相关资源
      最近更新 更多