我在Tomcat上增加内存消耗时遇到问题。 刚启动后没有任何反应,但如果有一些用户登录,此内存使用量开始在Edem中开始增长。 PermGen不会增长,但无论如何,它是正常的。
我的分析显示线程RMI TCP连接产生大量的Object [] char []和String []对象。我无法理解错误和挖掘的地方。谁开始这个帖子,是postgres连接,这是什么?
答案 0 :(得分:5)
这是正常的,并非内存泄漏。用于管理应用程序的线程不断创建和销毁对象。您会看到内存不断增加,因为JVM垃圾收集器并未急切地回收未使用的内存。这种情况会定期发生(基于以前的统计数据)或内存不足时发生。如果它是一个真正的内存泄漏,你不会看到收集后Eden内存使用率下降到几乎为零。内存泄漏显示为最低点(GC之后)随时间增加。
答案 1 :(得分:2)
您正在观察您正在观察:
JVM收集有关自身的统计信息并将其发送给您。这会消耗内存并使用RMI传输工具。
What is RMI TCP Accept, Attach Listener, and Signal Dispatcher in Visual VM?
我也没有看到图片显示的问题。伊甸园基本上总是在慢慢增长,因为总会有一些消耗记忆的工作。
一旦Eden被收集(到最后约200MB),您可以看到大部分内存完全免费且很少(~8MB)在幸存者空间中结束,因为可能仍然引用这些对象。但是,由于OldGen没有增长,他们似乎不会离开幸存者,而底部的直方图显示典型的幸存者物体使其达到2级并且当时消失了。
这一切看起来都很正常。