【发布时间】:2019-07-05 18:38:46
【问题描述】:
我已将 tomcat(分配了 8GB 堆内存)连接到 visualvm。在 visualvm 中,在 tab sampler -> memory 下,总分配的内存显示为 17GB(18470717672 字节)。但是只为tomcat堆内存分配了8GB。在监视器选项卡中,它正确地将分配的堆大小显示为 8GB(8589934592 字节)。请说明为什么在采样器选项卡中分配的总内存显示为 17GB?
【问题讨论】:
我已将 tomcat(分配了 8GB 堆内存)连接到 visualvm。在 visualvm 中,在 tab sampler -> memory 下,总分配的内存显示为 17GB(18470717672 字节)。但是只为tomcat堆内存分配了8GB。在监视器选项卡中,它正确地将分配的堆大小显示为 8GB(8589934592 字节)。请说明为什么在采样器选项卡中分配的总内存显示为 17GB?
【问题讨论】:
总分配内存显示了为采样期间创建的对象分配了多少内存。其中一些对象已经被垃圾回收,不再使用任何内存。
Used 显示当前已分配但尚未被垃圾回收的对象占用了多少堆内存。
Size 显示分配给 JVM 的堆内存量。该空间可立即用于分配新对象。
Max 显示Size 可以增长多少。 JVM 不会向操作系统请求更多内存。如果新对象“不适合”,它将抛出 OutOfMemoryError。
【讨论】: