任何内存池bean中的CollectionUsage,PeakUsage,Usage字段有什么区别?
我在jconsole窗口的任何应用程序的路径中看到了这些:
mbeans标签> java.lang> memorypool>选择任何一个bean。
在右侧窗格中,我们可以看到这些属性。
答案 0 :(得分:3)
它们都在MemoryPoolMXBean
的javadoc中描述内存使用
getUsage()方法提供a的当前使用情况的估计值 内存池。对于垃圾收集 内存池,已用内存量 包括所有人占用的内存 池中的对象包括两者 可到达和无法访问的对象。
一般来说,这个方法是一个轻量级的操作来获取 近似内存使用量。对于一些 内存池,例如,何时 对象不是连续打包的, 这种方法可能很昂贵 需要一些操作 计算以确定电流 内存使用情况。一个实现应该 在这种情况下记录。
峰值内存使用量
Java虚拟机维护内存池的峰值内存使用量 自从虚拟机启动以来 或重置峰值。最高记忆 用法由。返回 getPeakUsage()方法并重置 调用resetPeakUsage()方法。
收集使用阈值
集合使用阈值是仅适用的可管理属性 一些垃圾收集的内存 池。在Java虚拟机之后 已经花费了回收的努力 回收未使用的内存空间 垃圾内存池中的对象 收集时间,一些字节数 在被占用的内存池中 收集后仍将使用。该 集合使用阈值允许a 要为此数量设置的值 字节,如果阈值是 超出,收集使用阈值 超出通知将被发出 由MemoryMXBean。除此之外 集合使用阈值计数 然后递增。
的 isCollectionUsageThresholdSupported() 方法可用于确定是否 支持此功能。
Java虚拟机执行 集合使用阈值检查 内存池的基础。这个检查是 如果集合使用已启用 阈值设置为正值。 如果收集使用阈值是 设置为零,禁用此检查 在这个内存池上。默认值是 零。 Java虚拟机 执行集合使用 垃圾门槛检查 收集时间。
一些垃圾收集的内存池 可能会选择不支持 收集使用门槛。对于 例如,仅管理内存池 通过连续的并发垃圾 集电极。对象可以分配 这个内存池由一些线程而来 未使用的对象被回收 并发垃圾收集器 同时。除非有 明确定义的垃圾收集时间 这是最合适的时间 检查内存使用情况,集合 使用阈值不应该 支撑。
收集使用阈值是 专为监控内存而设计 Java虚拟机之后的用法 已经花费了回收的努力 记忆空间。集合用法 也可以通过民意调查来监督 和阈值通知机制 以上描述的用法 阈值也是类似的。