【问题标题】:Unexpected tomcat memroy usage increasing monitored by jconsolejconsole 监控的意外 tomcat 内存使用增加
【发布时间】:2017-01-12 01:56:09
【问题描述】:

我正在学习 jvm,并尝试分析在 tomcat 中使用的内存。 tomcat启动时,Eden使用情况如下图: Tomcat eden space usage monitored by jconsole

没有在 tomcat 中部署战争,并且删除了所有默认上下文,例如 hostmanager、manager。 Tomcat 在默认配置下启动,并且不接受任何请求。调试模式和无调试模式相同。当 GC 运行时,内存使用量减少了。 是什么导致内存使用量增加? 谁能帮助我?谢谢。
运行环境:
jdk1.8.0_112
apache-tomcat-8.5.9

【问题讨论】:

    标签: java tomcat memory jvm jconsole


    【解决方案1】:

    我认为您的问题与您通过 JConsole 看到的内存利用率波动有关。我会尽力在这里提供我的两分钱......

    请记住,即使可能没有部署 WAR 文件,仍然有很多代码在该机器上运行以执行各种任务。一个示例是文件监视器,用于识别何时将新的 WAR 文件部署到您的工作目录。每段代码都会定期分配内存,最终会被垃圾回收,因此您会看到内存波动。

    另一段可能会占用大量内存的代码是分析器本身。为了让您能够获得通过 JConsole 获得的指标,需要在该盒子上运行一个代理来收集(并存储在内存中)您看到的信息。

    如果您想更好地了解 tomcat 实际分配的内容,我建议您使用一个好的 Java Profiler,它可以为您提供有关对象分配的更深入信息。我个人建议YourKit,因为它是我多年来构建软件时使用过的最强大的分析器之一。

    现在,可能还有其他原因,但不要仅仅因为您没有直接与 Tomcat 交互就认为它没有做任何事情。

    希望这会有所帮助,祝你好运!

    【讨论】:

      猜你喜欢
      • 2011-09-15
      • 2022-01-11
      • 1970-01-01
      • 1970-01-01
      • 2021-11-08
      • 2019-03-26
      • 2014-04-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多