【问题标题】:Java / Tomcat memory leak in RedHat Linux?RedHat Linux 中的 Java / Tomcat 内存泄漏?
【发布时间】:2010-06-01 01:16:13
【问题描述】:

我有一个运行 Tomcat 的 6G 内存的 Red Hat 盒子,我想弄清楚盒子上还剩下多少内存。问题是,top & jconsole 显示一个数字(大约 200M),而系统监视器显示一个不同的数字(大约 2G)。有人知道有什么区别吗?

我不确定这里是否发生了内存泄漏,但最大的内存消耗是一个占用 2.2G 内存的 tomcat 进程。

以下截图:

新增免费命令截图:

【问题讨论】:

    标签: java memory tomcat memory-leaks memory-management


    【解决方案1】:

    显然,top 告诉您 Tomcat 仅使用了 38% 的可用内存。你的问题(如果有问题的话)是在使用剩余 62% 的内存。

    我怀疑它被用于磁盘块/文件系统缓存。 (运行free 命令,我希望您会看到“缓存”的高值,其大小大致对应于丢失的页面。)

    如果您的系统在缓存中有大量页面,这是一个好事。所有这些缓存的磁盘块将使对文件系统的读取访问变得又快又好。 (如果操作系统需要物理页面来处理更重要的事情……比如运行应用程序……它可以快速从磁盘缓存中回收它们。)

    【讨论】:

    • 感谢 Stephen C,我添加了免费的命令截图。我想我不必担心它,因为缓存是一件好事。
    • 有没有办法判断哪个进程占用了缓存?
    • @black-rocky - 不。操作系统不会将磁盘块缓存中的内容与任何进程相关联。但这并不重要,因为正如我所说,缓存中的页面将按需回收。
    【解决方案2】:

    系统监视器显示 2G [已分配的最大堆大小] 的 tomcat 进程如何使用内存。

    在 linux 上尝试将其与显示当前可用内存的free -m 进行比较。

    【讨论】:

      【解决方案3】:

      “free -t”显示什么?我想知道其中一个数字是否包括缓存的文件系统数据(在物理上用于某事的意义上,它是已使用的内存,但在必要时可以随时清除它的意义上是空闲的)。

      【讨论】:

        猜你喜欢
        • 2014-12-25
        • 2012-08-20
        • 2015-12-27
        • 1970-01-01
        • 2015-08-15
        • 2011-04-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多