Java webapp:如何识别这个内存问题?

时间:2015-02-24 22:36:34

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

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

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

非常感谢有关此类问题的任何帮助或解释!

提前Thanxs

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

部署应用程序的应用程序服务器或Web容器似乎正在运行一些后台进程(JBoss有一个尝试恢复分布式事务的批处理过程)。启用日志跟踪并看到它说了些什么。但是你无需担心这一点。