Интерфейс SegmentAllocator
- Все известные подинтерфейсы:
Arena
- Функциональный интерфейс:
- Это функциональный интерфейс, поэтому его можно использовать в качестве цели присваивания для лямбда-выражения или ссылки на метод.
@FunctionalInterface public interface SegmentAllocator
allocate(long, long). Аллокатор сегментов определяет несколько методов, которые могут быть полезны для создания сегментов из различных типов значений Java, таких как примитивы и массивы. SegmentAllocator — это функциональный интерфейс. Клиенты могут легко получить новый аллокатор сегментов с помощью лямбда-выражения или ссылки на метод:
SegmentAllocator autoAllocator = (byteSize, byteAlignment) -> Arena.ofAuto().allocate(byteSize, byteAlignment);
Этот интерфейс определяет фабричные методы для часто используемых аллокаторов:
-
slicingAllocator(MemorySegment)возвращает эффективный аллокатор с разбиением на срезы, который выделяет память, многократно создавая срезы предоставленного сегмента памяти; -
prefixAllocator(MemorySegment)возвращает аллокатор, который оборачивает сегмент и повторно использует его содержимое при каждом новом запросе на выделение памяти.
Передача аллокатора сегментов в API может быть особенно полезна в случаях, когда клиент хочет указать, где следует хранить результаты определённой операции (выполняемой API) в виде сегмента памяти. Например, дескрипторы методов downcallОГРАНИЧЕНО могут принимать дополнительный параметр SegmentAllocator, если известно, что нижележащая внешняя функция возвращает структуру по значению. По сути, параметр аллокатора сообщает компоновщику, где хранить возвращаемое значение внешней функции.
- Примечание по API:
- Если не указано иное, метод
allocate(long, long)не является потокобезопасным. Кроме того, сегменты памяти, выделенные аллокатором сегментов, могут иметь разные сроки жизни и даже опираться на перекрывающиеся области памяти. По этим причинам клиентам, как правило, следует взаимодействовать только с принадлежащим им аллокатором сегментов.Вместо этого клиентам следует рассмотреть возможность использования арены, которая обеспечивает строгие гарантии потокобезопасности, срока жизни и отсутствия перекрытий.
- Начиная с версии:
- 22
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
default MemorySegment |
allocate |
Возвращает новый сегмент памяти с указанным byteSize. |
MemorySegment |
allocate |
Возвращает новый сегмент памяти с указанными byteSize и byteAlignment. |
default MemorySegment |
allocate |
Возвращает новый сегмент памяти с указанным макетом. |
default MemorySegment |
allocate |
Возвращает новый сегмент памяти с указанными elementLayout и count. |
default MemorySegment |
allocateFrom |
Возвращает новый сегмент памяти, инициализированный адресом предоставленного сегмента памяти. |
default MemorySegment |
allocateFrom |
Возвращает новый сегмент памяти, инициализированный предоставленным значением byte. |
default MemorySegment |
allocateFrom |
Возвращает новый сегмент памяти, инициализированный элементами предоставленного массива byte. |
default MemorySegment |
allocateFrom |
Возвращает новый сегмент памяти, инициализированный предоставленным значением char. |
default MemorySegment |
allocateFrom |
Возвращает новый сегмент памяти, инициализированный элементами предоставленного массива char. |
default MemorySegment |
allocateFrom |
Возвращает новый сегмент памяти, инициализированный предоставленным значением double. |
default MemorySegment |
allocateFrom |
Возвращает новый сегмент памяти, инициализированный элементами предоставленного массива double. |
default MemorySegment |
allocateFrom |
Возвращает новый сегмент памяти, инициализированный предоставленным значением float. |
default MemorySegment |
allocateFrom |
Возвращает новый сегмент памяти, инициализированный элементами предоставленного массива float. |
default MemorySegment |
allocateFrom |
Возвращает новый сегмент памяти, инициализированный предоставленным значением int. |
default MemorySegment |
allocateFrom |
Возвращает новый сегмент памяти, инициализированный элементами предоставленного массива int. |
default MemorySegment |
allocateFrom |
Возвращает новый сегмент памяти, инициализированный предоставленным значением long. |
default MemorySegment |
allocateFrom |
Возвращает новый сегмент памяти, инициализированный элементами предоставленного массива long. |
default MemorySegment |
allocateFrom |
Возвращает новый сегмент памяти, инициализированный предоставленным значением short. |
default MemorySegment |
allocateFrom |
Возвращает новый сегмент памяти, инициализированный элементами предоставленного массива short. |
default MemorySegment |
allocateFrom |
Возвращает новый сегмент памяти, инициализированный содержимым предоставленного сегмента. |
default MemorySegment |
allocateFrom |
Преобразует строку Java в строку C с завершающим нулевым символом с помощью кодировки UTF-8, сохраняя результат в сегменте памяти. |
default MemorySegment |
allocateFrom |
Преобразует строку Java в строку C с завершающим нулевым символом с помощью предоставленной кодировки и сохраняет результат в сегменте памяти. |
default MemorySegment |
allocateFrom |
Кодирует строку Java с помощью предоставленной кодировки и сохраняет полученный массив byte в сегменте памяти. |
static SegmentAllocator |
prefixAllocator |
Возвращает аллокатор сегментов, который обрабатывает запросы на выделение памяти, повторно используя один сегмент. |
static SegmentAllocator |
slicingAllocator |
Возвращает аллокатор сегментов, который обрабатывает запросы на выделение памяти, возвращая последовательные срезы, полученные из предоставленного сегмента. |
Подробное описание методов
allocateFrom
default MemorySegment allocateFrom(String str)
Вызов этого метода эквивалентен следующему коду:
allocateFrom(str, StandardCharsets.UTF_8);
- Параметры:
-
str— строка Java, которую требуется преобразовать в строку C - Возвращает:
- новый нативный сегмент, содержащий преобразованную строку C
allocateFrom
default MemorySegment allocateFrom(String str, Charset charset)
Этот метод всегда заменяет некорректные входные последовательности и последовательности символов, не поддающихся отображению, массивом байтов замены по умолчанию для этой кодировки. Если требуется больший контроль над процессом кодирования, следует использовать класс CharsetEncoder.
Если заданная строка содержит символы '\0', они также будут скопированы. Это означает, что в зависимости от метода чтения строки, например MemorySegment.getString(long), при повторном чтении строка будет усечена. Строку можно прочитать без усечения с помощью MemorySegment.getString(long, Charset, long).
- Требования к реализации:
- Реализация этого метода по умолчанию копирует содержимое указанной строки Java в новый сегмент памяти, полученный вызовом
this.allocate(B + N), где:-
B— размер строки в байтах при кодировании указанной кодировкой (например,str.getBytes(charset).length); -
N— размер (в байтах) символа-терминатора в указанной кодировке. Например, он равен 1 дляStandardCharsets.US_ASCIIи 2 дляStandardCharsets.UTF_16.
-
- Параметры:
-
str— строка Java, которую требуется преобразовать в строку C -
charset— кодировка, используемая для кодирования байтов строки - Возвращает:
- новый нативный сегмент, содержащий преобразованную строку C
- Выбрасывает:
-
IllegalArgumentException— еслиcharsetне является стандартной кодировкой
allocateFrom
default MemorySegment allocateFrom(String str, Charset charset, int srcIndex, int numChars)
Этот метод всегда заменяет некорректные входные последовательности и последовательности символов, не поддающихся отображению, массивом байтов замены по умолчанию для этой кодировки. Если требуется больший контроль над процессом кодирования, следует использовать класс CharsetEncoder.
Если заданная строка содержит символы '\0', они также будут скопированы. Это означает, что в зависимости от метода чтения строки, например MemorySegment.getString(long), при повторном чтении строка будет усечена. Строку можно прочитать без усечения с помощью MemorySegment.getString(long, Charset, long).
- Требования к реализации:
- Реализация этого метода по умолчанию копирует содержимое указанной строки Java в новый сегмент памяти, полученный вызовом
this.allocate(B), гдеB— размер строки в байтах при кодировании указанной кодировкой (например,str.getBytes(charset).length); - Параметры:
-
str— строка Java, которую требуется закодировать -
charset— кодировка, используемая для кодирования байтов строки -
srcIndex— начальный индекс исходной строки -
numChars— количество копируемых символов - Возвращает:
- новый нативный сегмент, содержащий закодированную строку
- Выбрасывает:
-
IndexOutOfBoundsException— еслиsrcIndexилиnumCharsимеют значение< 0 -
IndexOutOfBoundsException— еслиsrcIndex > str.length() - numChars - Начиная с:
- 27
allocateFrom
default MemorySegment allocateFrom(ValueLayout.OfByte layout, byte value)
Размер выделенного сегмента памяти равен размеру заданного макета. Заданное значение записывается в сегмент с учетом порядка байтов и ограничения выравнивания заданного макета.
- Требования к реализации:
- Реализация по умолчанию эквивалентна следующему коду:
MemorySegment seg = allocate(Objects.requireNonNull(layout)); seg.set(layout, 0, value); return seg; - Параметры:
-
layout— макет выделяемого блока памяти -
value— значение, которое необходимо установить в новом сегменте памяти - Возвращает:
- новый сегмент памяти, инициализированный заданным значением byte
allocateFrom
default MemorySegment allocateFrom(ValueLayout.OfChar layout, char value)
Размер выделенного сегмента памяти равен размеру заданного макета. Заданное значение записывается в сегмент с учетом порядка байтов и ограничения выравнивания заданного макета.
- Требования к реализации:
- Реализация по умолчанию эквивалентна следующему коду:
MemorySegment seg = allocate(Objects.requireNonNull(layout)); seg.set(layout, 0, value); return seg; - Параметры:
-
layout— макет выделяемого блока памяти -
value— значение, которое необходимо установить в новом сегменте памяти - Возвращает:
- новый сегмент памяти, инициализированный заданным значением char
allocateFrom
default MemorySegment allocateFrom(ValueLayout.OfShort layout, short value)
Размер выделенного сегмента памяти равен размеру заданного макета. Заданное значение записывается в сегмент с учетом порядка байтов и ограничения выравнивания заданного макета.
- Требования к реализации:
- Реализация по умолчанию эквивалентна следующему коду:
MemorySegment seg = allocate(Objects.requireNonNull(layout)); seg.set(layout, 0, value); return seg; - Параметры:
-
layout— макет выделяемого блока памяти -
value— значение, которое необходимо установить в новом сегменте памяти - Возвращает:
- новый сегмент памяти, инициализированный заданным значением short
allocateFrom
default MemorySegment allocateFrom(ValueLayout.OfInt layout, int value)
Размер выделенного сегмента памяти равен размеру заданного макета. Заданное значение записывается в сегмент с учетом порядка байтов и ограничения выравнивания заданного макета.
- Требования к реализации:
- Реализация по умолчанию эквивалентна следующему коду:
MemorySegment seg = allocate(Objects.requireNonNull(layout)); seg.set(layout, 0, value); return seg; - Параметры:
-
layout— макет выделяемого блока памяти -
value— значение, которое необходимо установить в новом сегменте памяти - Возвращает:
- новый сегмент памяти, инициализированный заданным значением int
allocateFrom
default MemorySegment allocateFrom(ValueLayout.OfFloat layout, float value)
Размер выделенного сегмента памяти равен размеру заданного макета. Заданное значение записывается в сегмент с учетом порядка байтов и ограничения выравнивания заданного макета.
- Требования к реализации:
- Реализация по умолчанию эквивалентна следующему коду:
MemorySegment seg = allocate(Objects.requireNonNull(layout)); seg.set(layout, 0, value); return seg; - Параметры:
-
layout— макет выделяемого блока памяти -
value— значение, которое необходимо установить в новом сегменте памяти - Возвращает:
- новый сегмент памяти, инициализированный заданным значением float
allocateFrom
default MemorySegment allocateFrom(ValueLayout.OfLong layout, long value)
Размер выделенного сегмента памяти равен размеру заданного макета. Заданное значение записывается в сегмент с учетом порядка байтов и ограничения выравнивания заданного макета.
- Требования к реализации:
- Реализация по умолчанию эквивалентна следующему коду:
MemorySegment seg = allocate(Objects.requireNonNull(layout)); seg.set(layout, 0, value); return seg; - Параметры:
-
layout— макет выделяемого блока памяти -
value— значение, которое необходимо установить в новом сегменте памяти - Возвращает:
- новый сегмент памяти, инициализированный заданным значением long
allocateFrom
default MemorySegment allocateFrom(ValueLayout.OfDouble layout, double value)
Размер выделенного сегмента памяти равен размеру заданного макета. Заданное значение записывается в сегмент с учетом порядка байтов и ограничения выравнивания заданного макета.
- Требования к реализации:
- Реализация по умолчанию эквивалентна следующему коду:
MemorySegment seg = allocate(Objects.requireNonNull(layout)); seg.set(layout, 0, value); return seg; - Параметры:
-
layout— макет выделяемого блока памяти -
value— значение, которое необходимо установить в новом сегменте памяти - Возвращает:
- новый сегмент памяти, инициализированный заданным значением double
allocateFrom
default MemorySegment allocateFrom(AddressLayout layout, MemorySegment value)
Значение адреса может быть усечено в соответствии с размером адреса платформы (см. ValueLayout.ADDRESS).
Размер выделенного сегмента памяти равен размеру заданного макета. Заданное значение записывается в сегмент с учетом порядка байтов и ограничения выравнивания заданного макета.
- Требования к реализации:
- Реализация по умолчанию эквивалентна следующему коду:
Objects.requireNonNull(value); MemorySegment seg = allocate(Objects.requireNonNull(layout)); seg.set(layout, 0, value); return seg; - Параметры:
-
layout— макет выделяемого блока памяти -
value— значение, которое необходимо установить в новом сегменте памяти - Возвращает:
- новый сегмент памяти, инициализированный адресом указанного сегмента памяти
- Выбрасывает:
-
IllegalArgumentException— еслиvalueне является нативным сегментом
allocateFrom
default MemorySegment allocateFrom(ValueLayout elementLayout, MemorySegment source, ValueLayout sourceElementLayout, long sourceOffset, long elementCount)
Размер выделенного сегмента памяти равен elementLayout.byteSize() * elementCount. Содержимое исходного сегмента копируется в результирующий сегмент поэлементно, с учетом порядка байтов и ограничения выравнивания заданного макета элемента.
- Требования к реализации:
- Реализация этого метода по умолчанию эквивалентна следующему коду:
MemorySegment dest = this.allocate(elementLayout, elementCount); MemorySegment.copy(source, sourceElementLayout, sourceOffset, dest, elementLayout, 0, elementCount); return dest; - Параметры:
-
elementLayout— макет элемента выделяемого массива -
source— исходный сегмент -
sourceElementLayout— макет элемента исходного сегмента -
sourceOffset— начальное смещение исходного сегмента в байтах -
elementCount— количество копируемых элементов исходного сегмента - Возвращает:
- новый сегмент памяти, инициализированный содержимым указанного сегмента
- Выбрасывает:
-
IllegalArgumentException— еслиelementLayout.byteSize() != sourceElementLayout.byteSize() -
IllegalArgumentException— если исходный сегмент или смещение несовместимы с ограничением выравнивания макета исходного элемента -
IllegalArgumentException— еслиelementLayout.byteAlignment() > elementLayout.byteSize() -
IllegalArgumentException— еслиsourceElementLayout.byteAlignment() > sourceElementLayout.byteSize() -
IllegalStateException— если связанная сsourceобласть действия не активна -
WrongThreadException— если этот метод вызывается из потокаT, так чтоsource.isAccessibleBy(T) == false -
IllegalArgumentException— если происходит переполнениеelementCount * sourceElementLayout.byteSize() -
IllegalArgumentException— еслиelementCount < 0 -
IndexOutOfBoundsException— еслиsourceOffset > source.byteSize() - (elementCount * sourceElementLayout.byteSize()) -
IndexOutOfBoundsException— еслиsourceOffset < 0
allocateFrom
default MemorySegment allocateFrom(ValueLayout.OfByte elementLayout, byte... elements)
Размер выделенного сегмента памяти равен elementLayout.byteSize() * elements.length. Содержимое исходного массива копируется в результирующий сегмент поэлементно, с учетом порядка байтов и ограничения выравнивания заданного макета элемента.
- Требования к реализации:
- Реализация этого метода по умолчанию эквивалентна следующему коду:
this.allocateFrom(layout, MemorySegment.ofArray(array), ValueLayout.JAVA_BYTE, 0, array.length) - Параметры:
-
elementLayout— макет элементов выделяемого массива -
elements— элементы byte, копируемые в новый блок памяти - Возвращает:
- новый сегмент памяти, инициализированный элементами указанного массива byte
- Выбрасывает:
-
IllegalArgumentException— еслиelementLayout.byteAlignment() > elementLayout.byteSize()
allocateFrom
default MemorySegment allocateFrom(ValueLayout.OfShort elementLayout, short... elements)
Размер выделенного сегмента памяти равен elementLayout.byteSize() * elements.length. Содержимое исходного массива копируется в результирующий сегмент поэлементно, с учетом порядка байтов и ограничения выравнивания заданного макета элемента.
- Требования к реализации:
- Реализация этого метода по умолчанию эквивалентна следующему коду:
this.allocateFrom(layout, MemorySegment.ofArray(array), ValueLayout.JAVA_SHORT, 0, array.length) - Параметры:
-
elementLayout— макет элементов выделяемого массива -
elements— элементы short, копируемые в новый блок памяти - Возвращает:
- новый сегмент памяти, инициализированный элементами указанного массива short
- Выбрасывает:
-
IllegalArgumentException— еслиelementLayout.byteAlignment() > elementLayout.byteSize()
allocateFrom
default MemorySegment allocateFrom(ValueLayout.OfChar elementLayout, char... elements)
Размер выделенного сегмента памяти равен elementLayout.byteSize() * elements.length. Содержимое исходного массива копируется в результирующий сегмент поэлементно, с учетом порядка байтов и ограничения выравнивания заданного макета элемента.
- Требования к реализации:
- Реализация этого метода по умолчанию эквивалентна следующему коду:
this.allocateFrom(layout, MemorySegment.ofArray(array), ValueLayout.JAVA_CHAR, 0, array.length) - Параметры:
-
elementLayout— макет элементов выделяемого массива -
elements— элементы char, копируемые в новый блок памяти - Возвращает:
- новый сегмент памяти, инициализированный элементами указанного массива char
- Выбрасывает:
-
IllegalArgumentException— еслиelementLayout.byteAlignment() > elementLayout.byteSize()
allocateFrom
default MemorySegment allocateFrom(ValueLayout.OfInt elementLayout, int... elements)
Размер выделенного сегмента памяти равен elementLayout.byteSize() * elements.length. Содержимое исходного массива копируется в результирующий сегмент поэлементно, с учетом порядка байтов и ограничения выравнивания заданного макета элемента.
- Требования к реализации:
- Реализация этого метода по умолчанию эквивалентна следующему коду:
this.allocateFrom(layout, MemorySegment.ofArray(array), ValueLayout.JAVA_INT, 0, array.length) - Параметры:
-
elementLayout— макет элементов выделяемого массива -
elements— элементы int, копируемые в новый блок памяти - Возвращает:
- новый сегмент памяти, инициализированный элементами указанного массива int
- Выбрасывает:
-
IllegalArgumentException— еслиelementLayout.byteAlignment() > elementLayout.byteSize()
allocateFrom
default MemorySegment allocateFrom(ValueLayout.OfFloat elementLayout, float... elements)
Размер выделенного сегмента памяти равен elementLayout.byteSize() * elements.length. Содержимое исходного массива копируется в результирующий сегмент поэлементно, с учетом порядка байтов и ограничения выравнивания заданного макета элемента.
- Требования к реализации:
- Реализация этого метода по умолчанию эквивалентна следующему коду:
this.allocateFrom(layout, MemorySegment.ofArray(array), ValueLayout.JAVA_FLOAT, 0, array.length) - Параметры:
-
elementLayout— макет элементов выделяемого массива -
elements— элементы float, копируемые в новый блок памяти - Возвращает:
- новый сегмент памяти, инициализированный элементами указанного массива float
- Выбрасывает:
-
IllegalArgumentException— еслиelementLayout.byteAlignment() > elementLayout.byteSize()
allocateFrom
default MemorySegment allocateFrom(ValueLayout.OfLong elementLayout, long... elements)
Размер выделенного сегмента памяти равен elementLayout.byteSize() * elements.length. Содержимое исходного массива копируется в результирующий сегмент поэлементно, с учетом порядка байтов и ограничения выравнивания заданного макета элемента.
- Требования к реализации:
- Реализация этого метода по умолчанию эквивалентна следующему коду:
this.allocateFrom(layout, MemorySegment.ofArray(array), ValueLayout.JAVA_LONG, 0, array.length) - Параметры:
-
elementLayout— макет элементов выделяемого массива -
elements— элементы long, копируемые в новый блок памяти - Возвращает:
- новый сегмент памяти, инициализированный элементами указанного массива long
- Выбрасывает:
-
IllegalArgumentException— еслиelementLayout.byteAlignment() > elementLayout.byteSize()
allocateFrom
default MemorySegment allocateFrom(ValueLayout.OfDouble elementLayout, double... elements)
Размер выделенного сегмента памяти равен elementLayout.byteSize() * elements.length. Содержимое исходного массива копируется в результирующий сегмент поэлементно, с учетом порядка байтов и ограничения выравнивания заданного макета элемента.
- Требования к реализации:
- Реализация этого метода по умолчанию эквивалентна следующему коду:
this.allocateFrom(layout, MemorySegment.ofArray(array), ValueLayout.JAVA_DOUBLE, 0, array.length) - Параметры:
-
elementLayout— макет элементов выделяемого массива -
elements— элементы double, копируемые в новый блок памяти - Возвращает:
- новый сегмент памяти, инициализированный элементами указанного массива double
- Выбрасывает:
-
IllegalArgumentException— еслиelementLayout.byteAlignment() > elementLayout.byteSize()
allocate
default MemorySegment allocate(MemoryLayout layout)
- Требования к реализации:
- Реализация этого метода по умолчанию вызывает
this.allocate(layout.byteSize(), layout.byteAlignment()). - Параметры:
-
layout— макет выделяемого блока памяти - Возвращает:
- новый сегмент памяти с заданным макетом
allocate
default MemorySegment allocate(MemoryLayout elementLayout, long count)
elementLayout и count.- Требования к реализации:
- Реализация этого метода по умолчанию вызывает
this.allocate(MemoryLayout.sequenceLayout(count, elementLayout)). - Параметры:
-
elementLayout— макет элемента массива -
count— количество элементов массива - Возвращает:
- новый сегмент памяти с заданными
elementLayoutиcount - Выбрасывает:
-
IllegalArgumentException— если происходит переполнениеelementLayout.byteSize() * count -
IllegalArgumentException— еслиcount < 0
allocate
default MemorySegment allocate(long byteSize)
byteSize.- Требования к реализации:
- Реализация этого метода по умолчанию вызывает
this.allocate(byteSize, 1). - Параметры:
-
byteSize— размер (в байтах) выделяемого блока памяти - Возвращает:
- новый сегмент памяти с заданным
byteSize - Выбрасывает:
-
IllegalArgumentException— еслиbyteSize < 0
allocate
MemorySegment allocate(long byteSize, long byteAlignment)
byteSize и byteAlignment.- Параметры:
-
byteSize— размер (в байтах) выделяемого блока памяти -
byteAlignment— выравнивание (в байтах) выделяемого блока памяти - Возвращает:
- новый сегмент памяти с заданными
byteSizeиbyteAlignment - Выбрасывает:
-
IllegalArgumentException— еслиbyteSize < 0,byteAlignment <= 0или еслиbyteAlignmentне является степенью двойки
slicingAllocator
static SegmentAllocator slicingAllocator(MemorySegment segment)
Возвращенный распределитель выбрасывает IndexOutOfBoundsException, если в указанном сегменте не удается найти срез требуемого размера и выравнивания.
- Примечание по реализации:
- Распределитель срезов не является потокобезопасным.
- Параметры:
-
segment— сегмент, из которого возвращенный распределитель должен создавать срезы - Возвращает:
- новый распределитель срезов
- Выбрасывает:
-
IllegalArgumentException— еслиsegmentдоступен только для чтения
prefixAllocator
static SegmentAllocator prefixAllocator(MemorySegment segment)
0, откуда и название префиксный распределитель. Эквивалентно следующему коду (но, вероятно, работает эффективнее):
MemorySegment segment = ...
SegmentAllocator prefixAllocator = (size, align) -> segment.asSlice(0, size, align);
IndexOutOfBoundsException, если в указанном сегменте не удается найти срез требуемого размера и выравнивания.- Примечание API:
- Префиксный распределитель может быть полезен для ограничения запросов на выделение памяти, если клиент знает, что полностью обработал содержимое выделенного сегмента до следующего запроса на выделение памяти.
- Примечание по реализации:
- Хотя префиксный распределитель является потокобезопасным, при одновременном доступе к одному повторно используемому распределителю один поток может перезаписать содержимое базового сегмента, записанное другим потоком.
- Параметры:
-
segment— сегмент памяти, который будет повторно использоваться возвращенным распределителем - Возвращает:
- распределитель, повторно использующий существующий сегмент при каждом новом запросе на выделение памяти
- Выбрасывает:
-
IllegalArgumentException— еслиsegmentдоступен только для чтения
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.