package org.kne.cloud.network; import java.lang.foreign.Arena; import java.lang.foreign.MemorySegment; import java.lang.foreign.SegmentAllocator; import java.lang.ref.Cleaner; import java.lang.ref.PhantomReference; import java.lang.ref.Reference; import java.lang.ref.ReferenceQueue; import java.lang.ref.WeakReference; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.nio.BufferOverflowException; import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicReference; import org.kne.debug.TimeDebugger; import org.kne.membandboost.MembandBoost; public class ByteBufferAllocator { public ByteBufferAllocator(boolean isDirect) { } public ByteBuffer allocate(int capacity) { //if(capacity<1024) return allocateHeap(capacity); // return allocateNative(capacity); } //private Arena ar=BufferedArena.ofBuffered(); //private Arena ara=Arena.ofAuto(); public ByteBuffer allocateNative(int capacity) { //return ((jdk.internal.foreign.ArenaImpl)ara).allocateNoInit(capacity,1).asByteBuffer(); ByteBuffer buf=Arena.ofAuto().allocate(capacity).asByteBuffer(); if(buf.capacity()!=capacity) throw new InternalError(); return buf; } public static ByteBuffer allocateHeap(int capacity) { /*if(capacity<=2048) { return MembandBoost.allocateUninitializedHeapBufferBlocked(capacity); }else {*/ return MembandBoost.allocateUninitializedHeapBuffer(capacity); //} } }