java - Solaris : TOP command, RES mem 未关闭(java 程序)

标签 java jakarta-ee memory memory-management solaris

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

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

SunOS 5.10 Generic_142909-17 sun4v sparc sun4v

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

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

最高输出:

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

JConsole 输出:

enter image description here

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

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

提前致谢。

最佳答案

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

关于java - Solaris : TOP command, RES mem 未关闭(java 程序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12794670/

相关文章:

JavaSE-1.6 和 Java 兼容性

java - 特定整数在运行时需要多少字节?

java - Android——重构值(value)

Java ByteArrayOutputStream 到不同的容器中

java - java中类中何时返回值或使用getter

jakarta-ee - 如何在 Java EE 中建模?

java - Hibernate标准,从实体A中选择,其中someId在B中

c++ - 未知大小复杂度的堆栈分配

c - 如何在 Linux 中获取文件中某个位置的物理地址

java - 如何在 Java 中使用 XPath 将 CDATA 作为节点访问?