返回介绍

java.lang.management 类 MemoryNotificationInfo

发布于 2019-10-04 09:51:13 字数 6582 浏览 988 评论 0 收藏 0

java.lang.Object
  └java.lang.management.MemoryNotificationInfo

public class MemoryNotificationInfo
extends Object
 

关于内存通知的信息。

当 Java 虚拟机检测到内存池的内存使用量超过了阈值时, MemoryMXBean 将发出内存通知。发出的通知将包含关于检测到的情况的内存通知信息:

  • 内存池的名称。
  • 构造通知时内存池的内存使用量。
  • 构造通知时,内存使用量超过阈值的次数。对于使用量阈值通知,此计数将为 使用量阈值计数 。对于集合使用量阈值通知,此计数将为 集合使用量阈值计数

表示 MemoryNotificationInfo 对象的 CompositeData 存储在 通知用户数据 中。提供了 表单 方法将 CompositeData 转换为 MemoryNotificationInfo 对象。例如:

      Notification notif;

      // receive the notification emitted by MemoryMXBean and set to notif
      ...
            
      String notifType = notif.getType();
      if (notifType.equals(MemoryNotificationInfo.MEMORY_THRESHOLD_EXCEEDED) ||
          notifType.equals(MemoryNotificationInfo.MEMORY_COLLECTION_THRESHOLD_EXCEEDED)) {
          // retrieve the memory notification information
          CompositeData cd = (CompositeData) notif.getUserData();
          MemoryNotificationInfo info = MemoryNotificationInfo.from(cd);
          ....
      }  

MemoryMXBean 发出的通知类型为:

  • 使用量阈值超过通知 。当内存池的内存使用量增加,达到或超过其使用量阈值,将发出此通知。后续的使用量阈值超过情况不会导致更多的通知,一直到内存使用量返回到小于使用量阈值的状态为止。
  • 集合使用量阈值超过通知 。当 Java 虚拟机对内存池中不使用的对象进行了回收工作之后,内存池的内存使用量大于或等于其集合使用量阈值时,将发出此通知。
从以下版本开始:
1.5

字段摘要
staticStringMEMORY_COLLECTION_THRESHOLD_EXCEEDED

表示当 Java 虚拟机对内存池中的不使用的对象进行了回收工作之后,内存池的内存使用量大于或等于其集合使用量阈值的通知类型。

staticStringMEMORY_THRESHOLD_EXCEEDED

表示内存池的内存使用量已达到或超过其使用量阈值的通知类型。

构造方法摘要
MemoryNotificationInfo(StringpoolName, MemoryUsageusage, longcount)

构造一个 MemoryNotificationInfo 对象。

方法摘要
staticMemoryNotificationInfofrom(javax.management.openmbean.CompositeDatacd)

返回由给定 CompositeData 表示的 MemoryNotificationInfo 对象。

longgetCount()

返回构造通知时内存使用量超过阈值的次数。

StringgetPoolName()

返回触发此通知的内存池的名称。

MemoryUsagegetUsage()

返回构造此通知时内存池的内存使用量。

从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

字段详细信息

MEMORY_THRESHOLD_EXCEEDED

public static final String MEMORY_THRESHOLD_EXCEEDED
表示内存池的内存使用量已达到或超过其使用量阈值的通知类型。此通知由 MemoryMXBean 发出。后续的使用量阈值超过情况不会导致更多的通知,一直到内存使用量返回到小于使用量阈值的状态为止。此通知类型的值为 java.management.memory.threshold.exceeded
另请参见:
常量字段值

MEMORY_COLLECTION_THRESHOLD_EXCEEDED

public static final String MEMORY_COLLECTION_THRESHOLD_EXCEEDED
表示当 Java 虚拟机对内存池中的不使用的对象进行了回收工作之后,内存池的内存使用量大于或等于其集合使用量阈值的通知类型。此通知由 MemoryMXBean 发出。此通知类型的值为 java.management.memory.collection.threshold.exceeded
另请参见:
常量字段值

构造方法详细信息

MemoryNotificationInfo

public MemoryNotificationInfo(StringpoolName,
                              MemoryUsageusage,
                              longcount)
构造一个 MemoryNotificationInfo 对象。
参数:
poolName - 触发此通知的内存池的名称。
usage - 内存池的内存使用量。
count - 超过阈值的次数计数。

方法详细信息

getPoolName

public String getPoolName()
返回触发此通知的内存池的名称。内存池使用量已经超过阈值。
返回:
触发此通知的内存池的名称。

getUsage

public MemoryUsage getUsage()
返回构造此通知时内存池的内存使用量。
返回:
构造此通知时内存池的内存使用量。

getCount

public long getCount()
返回构造通知时内存使用量超过阈值的次数。对于使用量阈值通知,此计数将为 阈值计数 。对于集合使用量阈值通知,此计数将为 集合使用量阈值计数
返回:
构造通知时,内存使用量超过阈值的次数。

from

public static MemoryNotificationInfo from(javax.management.openmbean.CompositeDatacd)
返回由给定 CompositeData 表示的 MemoryNotificationInfo 对象。此给定的 CompositeData 必须包含以下属性:
属性名称类型
poolNamejava.lang.String
usagejavax.management.openmbean.CompositeData
countjava.lang.Long
参数:
cd - 表示 MemoryNotificationInfoCompositeData
返回:
如果 cd 不为 null ,则返回由 cd 表示的 MemoryNotificationInfo 对象;否则,返回 null
抛出:
IllegalArgumentException - 如果 cd 不表示 MemoryNotificationInfo 对象。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文