--- old/src/java.management/share/classes/sun/management/ManagementFactoryHelper.java 2020-03-13 22:36:10.724834864 +0800 +++ new/src/java.management/share/classes/sun/management/ManagementFactoryHelper.java 2020-03-13 22:36:10.528840613 +0800 @@ -39,8 +39,9 @@ import java.security.PrivilegedActionException; import java.security.PrivilegedExceptionAction; -import jdk.internal.access.JavaNioAccess; import jdk.internal.access.SharedSecrets; +import jdk.internal.misc.VM; +import jdk.internal.misc.VM.BufferPool; import java.util.ArrayList; import java.util.List; @@ -340,13 +341,8 @@ private static List bufferPools = null; public static synchronized List getBufferPoolMXBeans() { if (bufferPools == null) { - bufferPools = new ArrayList<>(2); - bufferPools.add(createBufferPoolMXBean(SharedSecrets.getJavaNioAccess() - .getDirectBufferPool())); - bufferPools.add(createBufferPoolMXBean(sun.nio.ch.FileChannelImpl - .getMappedBufferPool())); - bufferPools.add(createBufferPoolMXBean(sun.nio.ch.FileChannelImpl - .getSyncMappedBufferPool())); + bufferPools = new ArrayList<>(3); + VM.getBufferPools().forEach(pool -> bufferPools.add(createBufferPoolMXBean(pool))); } return bufferPools; } @@ -357,7 +353,7 @@ * Creates management interface for the given buffer pool. */ private static BufferPoolMXBean - createBufferPoolMXBean(final JavaNioAccess.BufferPool pool) + createBufferPoolMXBean(final BufferPool pool) { return new BufferPoolMXBean() { private volatile ObjectName objname; // created lazily