< prev index next >
src/java.base/share/classes/sun/nio/fs/NativeBuffers.java
Print this page
*** 23,32 ****
--- 23,33 ----
* questions.
*/
package sun.nio.fs;
+ import jdk.internal.misc.JdkThreadLocal;
import jdk.internal.misc.Unsafe;
/**
* Factory for native buffers.
*/
*** 35,46 ****
private NativeBuffers() { }
private static final Unsafe unsafe = Unsafe.getUnsafe();
private static final int TEMP_BUF_POOL_SIZE = 3;
! private static ThreadLocal<NativeBuffer[]> threadLocal =
! new ThreadLocal<NativeBuffer[]>();
/**
* Allocates a native buffer, of at least the given size, from the heap.
*/
static NativeBuffer allocNativeBuffer(int size) {
--- 36,61 ----
private NativeBuffers() { }
private static final Unsafe unsafe = Unsafe.getUnsafe();
private static final int TEMP_BUF_POOL_SIZE = 3;
! private static ThreadLocal<NativeBuffer[]> threadLocal = new JdkThreadLocal<>() {
! @Override
! protected void threadTerminated() {
! NativeBuffer[] buffers = get();
! // threadLocal may be initialized but with initialValue of null
! if (buffers != null) {
! for (int i = 0; i < TEMP_BUF_POOL_SIZE; i++) {
! NativeBuffer buffer = buffers[i];
! if (buffer != null) {
! buffer.free();
! buffers[i] = null;
! }
! }
! }
! }
! };
/**
* Allocates a native buffer, of at least the given size, from the heap.
*/
static NativeBuffer allocNativeBuffer(int size) {
< prev index next >