java - 一个带-Xmx1024m的Java进程怎么会占用3GB常驻内存呢?

标签 java memory-leaks

它是 Websphere6.1、Solaris 10、JDK 1.5.0_13 上的 Java Web 应用程序。我们将最大堆大小设置为 1024m。 jmap 显示堆状态是健康的。堆内存使用率仅为 57%。完全没有 OutOfMemory。

但是我们从 ps 中看到了这个 java 进程的非常高的 RSS (3GB)。 pmap显示了一 block 1.9G的私有(private)内存。

3785:   /dmwdkpmmkg/was/610/java/bin/java -server -Dwas.status.socket=65370 -X
 Address  Kbytes     RSS    Anon  Locked Pgsz Mode   Mapped File
...
0020A000    2008    2008    2008       -   8K rwx--    [ heap ]
00400000 1957888 1957888 1957888       -   4M rwx--    [ heap ]
8D076000      40      40      40       -   8K rw--R    [ stack tid=10786 ]
...

它是 native 代码中的 C 堆内存泄漏吗?推荐使用什么方法来找出根本原因?

最佳答案

Troubleshooting Memory Leaks Sun 的文档可能会帮助您找到高 RSS 的问题,特别是在第 3.4 节中。

当您运行 Websphere 时,也许您可​​以在您的虚拟机上使用 -memorycheck。详情见here .

这不一定是本地代码泄漏。如果你看here ,在 Solaris 上可能存在文件保持打开的问题。

这只是一堆链接和提示,但可能有助于追踪您的问题。

关于java - 一个带-Xmx1024m的Java进程怎么会占用3GB常驻内存呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/686397/

相关文章:

java - 在 Firebase 中进行循环查询

java - 如何在 map 标记(汽车)周围放置进度条

c++ - 如何为局部变量分配内存?

iphone - Instruments Leaks - 不显示我的源代码

c# - Android 上的 Xamarin Profiler 错误(运行时太旧)

memory - 这是 Spark 流的错误还是内存泄漏?

java - 如何在布局中将 TextView 与背景对齐 - Android

java - 比较和对比 Java 和 Delphi 中的接口(interface)

java - 如何将计时器融入到心跳动画中?

c# - HttpClient爬取导致内存泄漏