【问题标题】:Solaris : TOP command, RES mem not coing down ( java program )Solaris:TOP 命令,RES mem 不下来(java 程序)
【发布时间】:2012-10-09 07:12:37
【问题描述】:

我正在通过我的 java 程序运行负载,并通过 jconsole 和 top 命令分析内存消耗。

我正在使用的“uname -a”机器是:

SunOS 5.10 Generic_142909-17 sun4v sparc sun4v

我的问题是,如果我通过 top 命令看到内存消耗,那么当负载运行时 RES 内存会增加,这很好,但当我停止负载时它不会下降。

如果发生 GC,那么 RES mem 也不会下降。与 Jconsole 中的相反,我可以看到发生 GC 时 mem 消耗下降。

最高输出:

PID 用户名 LWP PRI NICE SIZE RES 状态时间 CPU 命令
16959 aconyx 836 59 0 7559M 3696M 睡眠 61:27 0.04% java

JConsole 输出:

在同一时间点,jconsole 显示已使用 384 MB,顶部 RES 显示已使用 3696 MB。

关于为什么顶部 RES 内存没有像 jconsole 中可见的那样下降的任何指针。

提前致谢。

【问题讨论】:

    标签: java jakarta-ee memory memory-management solaris


    【解决方案1】:

    要知道的重要一点是,java GC 不会将内存释放给操作系统,它只是释放它以便 JVM 可以重用它。

    【讨论】:

    • 好的。所以这意味着top总是显示我的程序使用的最高内存并且它独立于java GC。这意味着top命令的上述行为是可以接受的......
    • 没错!!其他应用程序(C、C++)可能不会发生这种情况,但它是与 java 一起工作的方式。
    • Solaris 上的大多数应用程序都会发生这种情况 - C 中的 free() 函数和 C++ 中的 delete 只是将内存返回到应用程序堆,应用程序必须特别努力减少堆大小和将内存返回给操作系统。
    猜你喜欢
    • 2017-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-24
    • 2012-08-11
    • 1970-01-01
    相关资源
    最近更新 更多