diff --git a/plugins/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/stats/FlightStatsCollector.java b/plugins/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/stats/FlightStatsCollector.java index 7e46f3072a31e..f35be2f8ed086 100644 --- a/plugins/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/stats/FlightStatsCollector.java +++ b/plugins/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/stats/FlightStatsCollector.java @@ -117,10 +117,16 @@ private void updateResourceMetrics() { long directMemoryBytes = 0; try { - java.lang.management.MemoryMXBean memoryBean = java.lang.management.ManagementFactory.getMemoryMXBean(); - directMemoryBytes = memoryBean.getNonHeapMemoryUsage().getUsed(); + for (java.lang.management.BufferPoolMXBean pool : java.lang.management.ManagementFactory.getPlatformMXBeans( + java.lang.management.BufferPoolMXBean.class + )) { + if ("direct".equals(pool.getName())) { + directMemoryBytes = pool.getMemoryUsed(); + break; + } + } } catch (Exception e) { - directMemoryBytes = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory(); + directMemoryBytes = 0; } int clientThreadsActive = 0;