Java网络应用程序: How to identify this memory issue?

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

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

当我转储内存时,它始终是一个 60/80 Mo 文件,显示使用的总内存约为 60/80 Mo,并且未检测到泄漏 如果我删除 javamelody 并使用 jconsole,它会显示同样的问题,内存不断增长(虽然有点慢) 我怎样才能看到这些+100Mo物体是什么,不断增长然后被GC?我该如何解决这个问题?

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

提前致谢

编辑:我忘了提及该图来自一个隔离的环境,上面绝对没有用户 Activity (没有http请求/没有计划的作业)

最佳答案

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

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

关于Java网络应用程序: How to identify this memory issue?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28707734/

相关文章:

java - 向 ResponseBody 对象添加附加属性

c# - 如何使用 Roslyn CSharpCompilation 避免内存泄漏

java - 泄漏的 Java 库慢慢占用所有内存,没有抛出 OutOfMemoryException,解决方法?

java - 这个类图是由什么生成的?

spring - 登录后重定向到包含#(哈希)符号的页面

java - 如何在 IntelliJ 中编写 Java 8 方法引用

用于存储过程后端的 Java Web 框架前端

ios - 如何解决xcode中的iPhone应用程序内存泄漏(仪器)

java - 将字符串解析为资源名称

java - 从 JTextfield 获取输入