private void recovered() {
        TerminalFriendlyTable table = new TerminalFriendlyTable("Watermark Controller Key Metrics");
        table.addRow(new TerminalFriendlyTable.Row("Heap Memory Max", String.format("%,d", heapMemoryMax)));
        table.addRow(new TerminalFriendlyTable.Row("Heap Memory Used", String.format("%,d", heapMemoryUsed)));
        table.addRow(new TerminalFriendlyTable.Row("Heap Memory Usage Percentage", heapMemoryUsagePercent() + "%"));
        table.addRow(new TerminalFriendlyTable.Row("Direct Memory Used", String.format("%,d", directMemoryUsed)));
        table.addRow(new TerminalFriendlyTable.Row("Event", "RECOVERED"));

        isLimiting = false;
        lock.lock();
        try {
            listeners.forEach(listener -> {
                listener.beAwareOfRecovery();
                table.addRow(new TerminalFriendlyTable.Row("Notified Listener", listener.getName()));
                recoverCounters.get(listener.getName()).inc();
            });
        } finally {
            lock.unlock();
        }
        log.info(table.toString());
    }
Heap memory used, jvm_memory_used_bytes{area="heap"}, Use the combination of all available ids of heap memory.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/watermark/WatermarkWatcher.java