Оповещение при достижении 80% от кучного использования

Cheetah:

У меня есть внутренний кэш, который удерживается в куче. Я хотел бы уведомить, когда куча 80% используется (после сбора ГЦ), так что я могу организовать для кучи размера должна быть увеличена (или какой-либо другое действие)

Я взглянуть на: https://docs.oracle.com/javase/7/docs/api/java/lang/management/MemoryMXBean.html , а именно: https://docs.oracle.com/javase/ 7 / документы / API / Java / языки / управление / MemoryNotificationInfo.html # MEMORY_COLLECTION_THRESHOLD_EXCEEDED

Похоже , что я могу установить порог здесь: https://docs.oracle.com/javase/7/docs/api/java/lang/management/MemoryPoolMXBean.html#setCollectionUsageThreshold(long) , однако я не уверен , если это будет иметь любое нежелательное влияние.

Что это лучший способ добиться того, что я после?

Чарльз Dowbecki:

Вы посмотрите на то, как улей делает это можете HeapMemoryMonitorкласс , который вызывает MemoryPoolMXBean.setUsageThreshold()метод после того, как несколько проверок выполняются.

Если вы хотите установить порог в 80% вы должны вычислить значение как:

MemoryPoolMXBean pool = ... 
pool.setUsageThreshold((long) Math.floor(pool.getUsage().getMax() * 0.8));

рекомендация

отhttp://43.154.161.224:23101/article/api/json?id=190484&siteId=1