SegmentAllocator — 세그먼트 할당자
SegmentAllocator — 세그먼트 할당자
SegmentAllocator는 메모리 세그먼트를 할당하는 데 사용할 수 있는 객체입니다. 이 인터페이스를 구현하는 클라이언트는 allocate(long, long) 메서드를 반드시 구현해야 합니다.
본문
세그먼트 할당자는 원시 타입과 배열 등 여러 종류의 Java 값으로부터 세그먼트를 만드는 데 유용한 여러 메서드를 정의합니다. SegmentAllocator는 함수형 인터페이스이므로, 람다 표현식이나 메서드 참조로 쉽게 새 할당자를 얻을 수 있습니다.
@FunctionalInterface
public interface SegmentAllocator
예를 들면 다음과 같습니다.
SegmentAllocator autoAllocator =
(byteSize, byteAlignment) -> Arena.ofAuto().allocate(byteSize, byteAlignment);
주요 메서드
MemorySegment allocate(long byteSize, long byteAlignment)
default MemorySegment allocate(long byteSize)
default MemorySegment allocate(MemoryLayout layout)
default MemorySegment allocateUtf8String(String str)
default MemorySegment allocate(ValueLayout.OfInt layout, int value)
default MemorySegment allocateArray(ValueLayout.OfInt elementLayout, int... elements)
static SegmentAllocator slicingAllocator(MemorySegment segment)
static SegmentAllocator prefixAllocator(MemorySegment segment)
allocate계열 메서드는 크기·정렬 또는 레이아웃으로 세그먼트를 할당합니다.allocateUtf8String은 UTF-8 문자열을 담는 세그먼트를 할당합니다.slicingAllocator/prefixAllocator는 지정한 세그먼트 안에서 할당하는 할당자 팩토리입니다.