Package com.metsci.glimpse.util.buffer
Class DirectBufferDealloc
- java.lang.Object
-
- com.metsci.glimpse.util.buffer.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 Summary
Constructors Constructor Description DirectBufferDealloc()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static voidcheckModuleAccess()static voiddeallocateDirectBuffer(Buffer directBuffer)static voiddeallocateDirectBuffers(Buffer... directBuffers)static voiddeallocateDirectBuffers(Collection<? extends Buffer> directBuffers)
-
-
-
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)
-
-