【发布时间】:2016-06-07 03:12:24
【问题描述】:
【问题讨论】:
-
堆只是 JVM 中的一个内存区域,仅仅使用了最大堆大小的 50%,并不意味着其他 50% 已释放给操作系统。看来您的最大堆为 3.0 GB,并且您在共享库、线程堆栈等中大约有 0.4 GB。也就是说,它对我来说看起来很正常。
标签: java linux jmx jconsole top-command
【问题讨论】:
标签: java linux jmx jconsole top-command
它们显示的同一个程序的内存使用情况是多么的不同。有没有其他东西会消耗内存?
是的。 Java 在大块中分配其内存并在内部管理这些块(作为单个进程)。 linux top 命令仅将 JVM 视为一个整体(而不是内部内存使用情况)。为此,请使用 jconsole;它显示有多少可用内存(在 JVM 内)。
【讨论】:
顺便说一句,您还可以从 OperatingSystemMXBean 获取 JVM 操作系统进程的总内存使用情况。
【讨论】: