Уведомление о нехватке памяти в Java - PullRequest
7 голосов
/ 28 мая 2011

Есть ли какая-либо поставляемая функция в 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);

1 Ответ

6 голосов
/ 28 мая 2011

Я полагаю, что вы можете настроить прослушиватель для порога использования памяти, используя MemoryMXBean .Пример кода приведен в ссылке javadoc.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...