Class DirectBufferDealloc


  • public class DirectBufferDealloc
    extends Object
    Uses non-public APIs (e.g. via reflection) to free the off-heap memory that backs an NIO direct buffer. Normally such off-heap memory is not freed until the garbage collector finalizes the direct buffer. This delay causes problems when a lot of off-heap memory is used, but garbage collections are infrequent.

    Works on Oracle/OpenJDK 8 JVMs.

    Works on OpenJDK 9+ JVMs, but requires the following JVM args:

     --add-opens java.base/sun.nio.ch=com.metsci.glimpse.util
     --add-opens java.base/jdk.internal.ref=com.metsci.glimpse.util
     

    Use with caution. Deallocating a buffer inappropriately can crash the JVM (or even worse, conceivably).

    • Constructor Detail

      • DirectBufferDealloc

        public DirectBufferDealloc()
    • Method Detail

      • checkModuleAccess

        public static void checkModuleAccess()
      • deallocateDirectBuffer

        public static void deallocateDirectBuffer​(Buffer directBuffer)
      • deallocateDirectBuffers

        public static void deallocateDirectBuffers​(Buffer... directBuffers)
      • deallocateDirectBuffers

        public static void deallocateDirectBuffers​(Collection<? extends Buffer> directBuffers)