Module java.management

Class MemoryNotificationInfo

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

public class MemoryNotificationInfo extends Object
关于内存通知的信息。

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

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

存储在用户数据中的代表MemoryNotificationInfo对象的CompositeData。提供了一个from方法,用于将CompositeData转换为MemoryNotificationInfo对象。例如:

      Notification notif;

      // 接收MemoryMXBean发出的通知并设置为notif
      ...

      String notifType = notif.getType();
      if (notifType.equals(MemoryNotificationInfo.MEMORY_THRESHOLD_EXCEEDED) ||
          notifType.equals(MemoryNotificationInfo.MEMORY_COLLECTION_THRESHOLD_EXCEEDED)) {
          // 检索内存通知信息
          CompositeData cd = (CompositeData) notif.getUserData();
          MemoryNotificationInfo info = MemoryNotificationInfo.from(cd);
          ....
      }
 

MemoryMXBean发出的通知类型有:

自Java版本:
1.5
  • Field Details

    • 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
      参见:
  • Constructor Details

    • MemoryNotificationInfo

      public MemoryNotificationInfo(String poolName, MemoryUsage usage, long count)
      构造一个MemoryNotificationInfo对象。
      参数:
      poolName - 触发此通知的内存池的名称。
      usage - 内存池的内存使用量。
      count - 阈值越过计数。
  • Method Details

    • getPoolName

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

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

      public long getCount()
      返回在构造通知时内存使用量越过阈值的次数。对于使用阈值通知,此计数将是阈值计数。对于收集阈值通知,此计数将是收集使用阈值计数
      返回:
      在构造通知时内存使用量越过阈值的次数。
    • from

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