private void startMemoryPoolPoller() {
    if (tenuredMemoryPoolMXBean == null) {
      return;
    }

    pollerExecutor = LoggingExecutors.newScheduledThreadPool(1, "GemfireHeapPoller");
    pollerExecutor.scheduleAtFixedRate(new HeapPoller(), POLLER_INTERVAL, POLLER_INTERVAL,
        TimeUnit.MILLISECONDS);

    if (logger.isDebugEnabled()) {
      logger.debug(
          "Started GemfireHeapPoller to poll the heap every " + POLLER_INTERVAL + " milliseconds");
    }
  }
Start a separate thread for polling the JVM for heap memory usage.
geode-core/src/main/java/org/apache/geode/internal/cache/control/HeapMemoryMonitor.java