Интерфейс MemorySegment.Scope
- Включающий интерфейс:
MemorySegment
public static sealed interface MemorySegment.Scope
То есть, к сегменту памяти нельзя получить доступ, если связанная с ним область видимости не активна. Экземпляры областей видимости можно сравнивать на равенство. То есть, две области видимости считаются равными, если они обозначают один и тот же жизненный цикл.
Жизненный цикл сегмента памяти может быть либо неограниченным, либо ограниченным. Неограниченный жизненный цикл моделируется глобальной областью видимости. Глобальная область видимости всегда alive. Таким образом, сегмент, связанный с глобальной областью видимости, имеет тривиальные временные границы и всегда доступен. Сегменты, связанные с глобальной областью видимости:
- Сегменты, полученные из глобальной области;
- Сегменты, полученные из сырого адреса с помощью фабрики
MemorySegment.ofAddress(long); и -
Zero-length memory segments.
Напротив, ограниченный жизненный цикл моделируется областью видимости сегмента, которая может быть аннулирована, либо explicitly, либо автоматически, сборщиком мусора. Область видимости сегмента, которая аннулируется автоматически, является автоматической областью видимости. Автоматическая область видимости всегда alive, пока она доступна. Сегменты, связанные с автоматической областью видимости:
- Сегменты, полученные из автоматической области;
- Сегменты, полученные из массива Java, например, с использованием фабрики
MemorySegment.ofArray(int[]); - Сегменты, полученные из буфера с использованием фабрики
MemorySegment.ofBuffer(Buffer); и - Сегменты, полученные из поиска загрузчика.
byte[] arr = new byte[10];
MemorySegment segment1 = MemorySegment.ofArray(arr);
MemorySegment segment2 = MemorySegment.ofArray(arr);
assert segment1.scope().equals(segment2.scope());
- С момента:
- 22
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
equals |
Возвращает true, если предоставленный объект также является областью видимости, которая моделирует такой же жизненный цикл, как и эта область видимости. |
int |
hashCode() |
Возвращает хэш-код этого объекта области видимости. |
boolean |
isAlive() |
Возвращает true, если области памяти, лежащие в основе сегментов памяти, связанных с этой областью видимости, по-прежнему действительны. |
Подробное описание методов
isAlive
boolean isAlive()
true, если области памяти, лежащие в основе сегментов памяти, связанных с этой областью видимости, по-прежнему действительны.- Возвращает:
-
true, если области памяти, лежащие в основе сегментов памяти, связанных с этой областью видимости, по-прежнему действительны
equals
boolean equals(Object that)
true, если предоставленный объект также является областью видимости, которая моделирует такой же жизненный цикл, как и эта область видимости.. В этом случае всегда верно, что this.isAlive() == ((Scope)that).isAlive().hashCode
int hashCode()
- Переопределяет:
-
hashCodeв классеObject - Требования к реализации:
- Реализации этого метода подчиняются общему соглашению о
Object.hashCode(). - Возвращает:
- хэш-код этого объекта области видимости
- См. также:
© 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.
https://download.java.net/java/early_access/jdk24/docs/api/java.base/java/lang/foreign/MemorySegment.Scope.html