java - CollectionUsage,PeakUsage,用法之间的区别?

  显示原文与译文双语对照的内容
0 0

任何 memoryPool bean中的CollectionUsage 。PeakUsage和Usage字段的区别是什么?
我在jconsole窗口中的任何应用程序的路径中看到这些:
> java.lang> memoryPool> 选择任何 bean 。
右边的pane窗格我们可以看到这些属性。

时间:原作者:1个回答

0 0

它们都是在的javadoc中描述的。

内存使用

getUsage() 方法提供内存池当前使用的估计。 对于回收内存池,使用的内存量包括池中所有对象占用的内存,包括可以到达的和未到达的对象。

通常,这里方法是一个轻量级操作,用于获取近似内存使用情况。 例如对于某些内存池,当对象未连续包装时,这里方法可能是一个昂贵的操作,需要一些计算来确定当前内存使用情况。 实现应该记录什么时候发生这种情况。

峰值内存使用率

Java虚拟机启动或者重置峰值之后,Java虚拟机维护内存池的峰值内存使用率。 使用 getPeakUsage() 方法返回峰值内存,并通过调用 resetPeakUsage() 方法重新设置。

Collection 使用率阈值

Collection 使用阈值是一个可以管理的属性,只适用于某些垃圾回收内存池。 在垃圾回收时间内,Java虚拟机在回收内存池中回收未使用对象后,仍将使用内存池中的某些字节,这些字节将仍在使用。 Collection 使用阈值允许为这个字节数设置一个值,如果超过阈值,Collection 使用阈值将超出通知。 此外,Collection 使用阈值计数将被增加。

isCollectionUsageThresholdSupported() 方法可以用于确定是否支持这里功能。

:Java虚拟机对内存池执行 Collection 使用阈值检查。 如果 Collection 使用阈值设置为正值,则启用这里检查。 如果 Collection 使用阈值设置为0,则这里内存池上禁用这里检查。 默认值为零。Java虚拟机在垃圾 Collection 时间执行 Collection 使用阈值检查。

一些垃圾回收内存池可能选择不支持 Collection 使用阈值。 例如内存池仅由连续并发垃圾回收器管理。 对象可以以由一些线程在这里内存池中分配,同时并发垃圾回收器会同时回收未使用的对象。 除非有良好定义的垃圾 Collection 时间,这是检查内存使用情况的最佳时机,否则不支持 Collection 使用阈值。

此外,在Java虚拟机回收内存空间之后,设计了用于监控内存使用情况的使用阈值。 也可以以通过上面描述的轮询和阈值通知机制来监视 Collection 使用情况,以类似的方式使用阈值。

原作者:
...