モジュール java.base
パッケージ java.lang.foreign

インタフェースMemorySegment.Scope

含まれているインタフェース:
MemorySegment

public static sealed interface MemorySegment.Scope
スコープは、関連付けられているすべてのメモリー・セグメントのlifetimeをモデル化します。

つまり、メモリー・セグメントは、関連するスコープがaliveでない場合はアクセスできません。 スコープ・インスタンスは等価性を比較できます。 つまり、同じ存続期間を示す場合、2つのスコープはequalとみなされます。

メモリー・セグメントの存続期間は、「制限なし」または「有限」のいずれかです。 バインドされていない存続期間は、「グローバル・スコープ」でモデル化されます。 グローバル・スコープは常にaliveです。 そのため、グローバル・スコープに関連付けられたセグメントは、簡単な時間的境界を備えており、常にアクセスできます。 グローバル・スコープに関連付けられたセグメントは次のとおりです。

逆に、バインドされた存続期間は、explicitlyまたはガベージ・コレクタによって自動的に無効化できるセグメント・スコープでモデル化されます。 自動的に無効化されるセグメント・スコープは、「自動スコープ」です。 自動スコープは、「到達可能」であるかぎり、常にaliveです。 自動スコープに関連付けられたセグメントは次のとおりです。

2つのメモリー・セグメントが同じ「バッファ」または「配列」から取得される場合、2つのセグメントの存続期間が同じであるため、そのセグメントに関連付けられた自動スコープはequalとみなされます。
byte[] arr = new byte[10];
MemorySegment segment1 = MemorySegment.ofArray(arr);
MemorySegment segment2 = MemorySegment.ofArray(arr);
assert segment1.scope().equals(segment2.scope());