【问题标题】:Java webapp : How to identify this memory issue?Java webapp:如何识别此内存问题?
【发布时间】:2015-02-24 22:36:33
【问题描述】:

我正在运行一个有点经典的 postgres/hibernate/spring mvc webapp,具有非常常见的层/框架。 一切看起来都很好,除了当我查看 javamelody 中的内存图时: 我周期性地看起来它在增长,gc被调用,然后它再次增长: memory graph

当我转储内存时,它总是一个 60/80 Mo 的文件,显示使用的总内存在 60/80 Mo 左右,没有检测到泄漏 如果我删除 javamelody 并使用 jconsole,它有点显示同样的问题,内存不断增长(有点慢) 我怎么能看到这些 +100Mo 对象是什么,不断增长然后 gc'ed ?我该如何解决这个问题?

任何有关此类问题的帮助或解释将不胜感激!

提前致谢

编辑:我忘了提到图表来自一个孤立的环境,上面绝对没有用户活动(没有 http 请求/没有预定的作业)

【问题讨论】:

    标签: java spring-mvc memory-leaks heap-memory java-melody


    【解决方案1】:

    这是 Java 垃圾收集器的预期行为。短期对象会在内存中累积,直到垃圾收集算法确定值得花时间回收该内存。

    您可以分析内存转储(例如,使用Eclipse Memory Analyzer)以发现这些对象在哪里,但请记住,这种情况不是问题(除非它们吃掉了你所有的内存和 OutOfMemoryError 被抛出)。

    【讨论】:

    • 是的,@Javier 是对的,根据您的描述,没有什么可担心的。
    • 感谢您的 anwser,但是我忘了提到该图表显示了绝对没有活动/http 请求/计划作业的内存使用情况,这就是为什么我担心重复创建 +100Mo 对象的原因。此外,内存转储似乎并不像我说的那样包含这些对象(总内存始终为 60/80Mo)
    【解决方案2】:

    似乎部署应用程序的应用程序服务器或 Web 容器正在运行一些后台进程(JBoss 有一个批处理进程试图恢复分布式事务)。启用日志记录跟踪,看看它说了什么。不过这没什么好担心的。

    【讨论】:

      猜你喜欢
      • 2022-01-07
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 2017-09-29
      • 2021-10-29
      • 2010-09-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多