Есть ли какая-либо поставляемая функция в Java, уведомляющая о нехватке памяти в приложении (или уведомляющая, что она достигла заранее определенного уровня)?
Мне было интересно, можно ли зарегистрировать слушателя (или что-то эквивалентное) где-то?Я знаю о методах памяти в классе Runtime.Я мог бы создать запланированное задание, проверяя оставшуюся память самостоятельно, но мне интересно, существует ли уже существующее решение.
Не думаю, но я ищу подтверждение.
ДЛЯ ЗАПИСЕЙ
MemoryMXBean mbean = ManagementFactory.getMemoryMXBean();
NotificationEmitter emitter = (NotificationEmitter) mbean;
NotificationListener listener = new NotificationListener() {
@Override
public void handleNotification(Notification notif, Object handback) {
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);
MemoryUsage mu = info.getUsage();
System.out.println("Maximum memory = " + mu.getMax());
System.out.println("Used memory = " + mu.getUsed());
}
}
};
emitter.addNotificationListener(listener, null, null);