0

我正在通过我的 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 sleep 61:27 0.04% java

JConsole 输出:

在此处输入图像描述

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

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

提前致谢。

4

1 回答 1

2

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

于 2012-10-09T07:23:56.673 回答