- すべてのスーパー・インタフェース:
AutoCloseable
public interface NativeScope extends AutoCloseable
ネイティブ・スコープは、オフ・ヒープ・メモリーによって支援される、1つ以上の割当てに対して共有の時間境界を提供する抽象化です。 ネイティブ・スコープは、ネイティブ・スコープのサイズが静的にわかっているかどうかに応じて、「有限」または「制限なし」のいずれかになります。 アプリケーションが割り当てる必要があるメモリー量を事前に把握している場合は、通常、「有限」ネイティブ・スコープを使用すると、値(例:
MemorySegment.allocateNative(long)
の使用)ごとに個別にメモリーを割り当てるよりも、または「制限なし」ネイティブ・スコープを使用するよりもパフォーマンスが向上します。 このため、プログラムがネイティブ・スタック割当てをエミュレートする必要がある場合は、バウンド・ネイティブ・スコープを使用することをお薦めします。
割当てスコープはスレッドで定義されます(ownerThread()
を参照)。したがって、ネイティブ・スコープによって返される結果のMemorySegment
インスタンスは、ネイティブ・スコープ所有者スレッドと同じ所有者スレッドによって制限されたメモリー・セグメントによってバッキングされます。
操作性を高めるために、ネイティブ・スコープで既存のメモリー・セグメント(MemorySegment.handoff(NativeScope)
を参照してください)の所有権を回収できます。 これは、個別に作成された1つ以上のセグメントが特定のネイティブ・スコープと同じライフサイクルを共有できるようにする場合に便利です - これにより、クライアントはすべてのメモリー割当ておよび使用量を単一の「try-with-resourcesブロック」にグループ化できます。
特に指定がないかぎり、null
引数、またはこのクラスのメソッドに1つ以上のnull
要素を含む配列引数を渡すと、NullPointerException
がスローされます。
- APIのノート:
- 将来、Java言語で許可される場合、
NativeScope
がsealed
インタフェースになる可能性があり、明示的に許可されているタイプ以外はサブクラス化できなくなります。
-
メソッドのサマリー
修飾子と型メソッド説明default MemorySegment
allocate(long bytesSize)
指定されたサイズのメモリー・ブロックをこのネイティブ・スコープに割り当てます。allocate(long bytesSize, long bytesAlignment)
指定されたサイズと配置の制約を使用して、このネイティブ・スコープにメモリー・ブロックを割り当てます。default MemorySegment
allocate(MemoryLayout layout)
指定されたレイアウトでこのネイティブ・スコープにメモリー・ブロックを割り当てます。default MemorySegment
allocate(ValueLayout layout, byte value)
指定されたレイアウトでこのネイティブ・スコープのメモリー・ブロックを割り当て、指定されたバイト値で初期化します。default MemorySegment
allocate(ValueLayout layout, char value)
指定されたレイアウトでこのネイティブ・スコープのメモリー・ブロックを割り当て、指定されたchar値で初期化します。default MemorySegment
allocate(ValueLayout layout, double value)
指定されたレイアウトでこのネイティブ・スコープのメモリー・ブロックを割り当て、指定されたdouble値で初期化します。default MemorySegment
allocate(ValueLayout layout, float value)
指定されたレイアウトでこのネイティブ・スコープのメモリー・ブロックを割り当て、指定されたfloat値で初期化します。default MemorySegment
allocate(ValueLayout layout, int value)
指定されたレイアウトでこのネイティブ・スコープのメモリー・ブロックを割り当て、指定されたint値で初期化します。default MemorySegment
allocate(ValueLayout layout, long value)
指定されたレイアウトでこのネイティブ・スコープのメモリー・ブロックを割り当て、指定されたlong値で初期化します。default MemorySegment
allocate(ValueLayout layout, short value)
指定されたレイアウトでこのネイティブ・スコープのメモリー・ブロックを割り当て、指定されたshort値で初期化します。default MemorySegment
allocate(ValueLayout layout, Addressable value)
指定されたレイアウトでこのネイティブ・スコープのメモリー・ブロックを割り当て、指定されたアドレス値(Addressable
インスタンスとして表現)で初期化します。default MemorySegment
allocateArray(MemoryLayout elementLayout, long count)
指定された要素のレイアウトとサイズを持つ配列に対応するメモリーのブロックを割り当てます。default MemorySegment
allocateArray(ValueLayout elementLayout, byte[] array)
指定されたレイアウトでこのネイティブ・スコープのメモリー・ブロックを割り当て、指定されたバイト配列で初期化します。default MemorySegment
allocateArray(ValueLayout elementLayout, char[] array)
指定されたレイアウトでこのネイティブ・スコープのメモリー・ブロックを割り当て、指定されたchar配列で初期化します。default MemorySegment
allocateArray(ValueLayout elementLayout, double[] array)
指定されたレイアウトでこのネイティブ・スコープのメモリー・ブロックを割り当て、指定されたdouble配列で初期化します。default MemorySegment
allocateArray(ValueLayout elementLayout, float[] array)
指定されたレイアウトでこのネイティブ・スコープのメモリー・ブロックを割り当て、指定されたfloat配列で初期化します。default MemorySegment
allocateArray(ValueLayout elementLayout, int[] array)
指定されたレイアウトでこのネイティブ・スコープのメモリー・ブロックを割り当て、指定されたint配列で初期化します。default MemorySegment
allocateArray(ValueLayout elementLayout, long[] array)
指定されたレイアウトでこのネイティブ・スコープのメモリー・ブロックを割り当て、指定されたlong配列で初期化します。default MemorySegment
allocateArray(ValueLayout elementLayout, short[] array)
指定されたレイアウトでこのネイティブ・スコープのメモリー・ブロックを割り当て、指定されたshort配列で初期化します。default MemorySegment
allocateArray(ValueLayout elementLayout, Addressable[] array)
指定されたレイアウトでこのネイティブ・スコープのメモリー・ブロックを割り当て、指定されたアドレス配列で初期化します。long
このネイティブ・スコープで割り当てられたバイト数を返します。static NativeScope
boundedScope(long size)
オフ・ヒープ・メモリーによってサポートされる新しいバウンド固有のスコープを作成します。byteSize()
このネイティブ・スコープがバインドされている場合、このネイティブ・スコープのサイズをバイト単位で返します。void
close()
このネイティブ・スコープをクローズします。このメソッドをコールすると、このネイティブ・スコープを介して取得されたセグメントが使用できなくなり、このネイティブ・スコープに関連付けられたバッキング・メモリー・リソースが解放される可能性があります。このネイティブ・スコープを所有するスレッド。static NativeScope
オフ・ヒープ・メモリーによってバッキングされる新しい無制限ネイティブ・スコープを作成します。
-
メソッドの詳細
-
byteSize
OptionalLong byteSize()このネイティブ・スコープがバインドされている場合、このネイティブ・スコープのサイズをバイト単位で返します。- 戻り値:
- このネイティブ・スコープ(使用可能な場合)のサイズ(バイト単位)。
-
ownerThread
Thread ownerThread()このネイティブ・スコープを所有するスレッド。- 戻り値:
- このネイティブ・スコープを所有するスレッド。
-
allocatedBytes
long allocatedBytes()このネイティブ・スコープで割り当てられたバイト数を返します。- 戻り値:
- このネイティブ・スコープ内の割り当てられたバイト数。
-
allocate
default MemorySegment allocate(ValueLayout layout, byte value)指定されたレイアウトでこのネイティブ・スコープのメモリー・ブロックを割り当て、指定されたバイト値で初期化します。 このメソッドによって返されたセグメントは、クローズできないセグメントに関連付けられています。 さらに、返されるセグメントは、レイアウト整列の制約に準拠している必要があります。- パラメータ:
layout
- 割り当てるメモリー・ブロックのレイアウト。value
- 新しく割り当てられたメモリー・ブロックに設定する値。- 戻り値:
- 新しく割り当てられたメモリー・ブロックのセグメント。
- 例外:
OutOfMemoryError
- このネイティブ・スコープに十分な領域が残っていない場合、つまり、これがバウンド割当てスコープである場合、およびbyteSize().getAsLong() - allocatedBytes() < layout.byteSize()
である場合。IllegalArgumentException
-layout.byteSize()
がバイト値のサイズに適合しない場合。
-
allocate
default MemorySegment allocate(ValueLayout layout, char value)指定されたレイアウトでこのネイティブ・スコープのメモリー・ブロックを割り当て、指定されたchar値で初期化します。 このメソッドによって返されたセグメントは、クローズできないセグメントに関連付けられています。 さらに、返されるセグメントは、レイアウト整列の制約に準拠している必要があります。- パラメータ:
layout
- 割り当てるメモリー・ブロックのレイアウト。value
- 新しく割り当てられたメモリー・ブロックに設定する値。- 戻り値:
- 新しく割り当てられたメモリー・ブロックのセグメント。
- 例外:
OutOfMemoryError
- このネイティブ・スコープに十分な領域が残っていない場合、つまり、これがバウンド割当てスコープである場合、およびbyteSize().getAsLong() - allocatedBytes() < layout.byteSize()
である場合。IllegalArgumentException
-layout.byteSize()
がchar値のサイズに適合しない場合。
-
allocate
default MemorySegment allocate(ValueLayout layout, short value)指定されたレイアウトでこのネイティブ・スコープのメモリー・ブロックを割り当て、指定されたshort値で初期化します。 このメソッドによって返されたセグメントは、クローズできないセグメントに関連付けられています。 さらに、返されるセグメントは、レイアウト整列の制約に準拠している必要があります。- パラメータ:
layout
- 割り当てるメモリー・ブロックのレイアウト。value
- 新しく割り当てられたメモリー・ブロックに設定する値。- 戻り値:
- 新しく割り当てられたメモリー・ブロックのセグメント。
- 例外:
OutOfMemoryError
- このネイティブ・スコープに十分な領域が残っていない場合、つまり、これがバウンド割当てスコープである場合、およびbyteSize().getAsLong() - allocatedBytes() < layout.byteSize()
である場合。IllegalArgumentException
-layout.byteSize()
がshort値のサイズに適合しない場合。
-
allocate
default MemorySegment allocate(ValueLayout layout, int value)指定されたレイアウトでこのネイティブ・スコープのメモリー・ブロックを割り当て、指定されたint値で初期化します。 このメソッドによって返されたセグメントは、クローズできないセグメントに関連付けられています。 さらに、返されるセグメントは、レイアウト整列の制約に準拠している必要があります。- パラメータ:
layout
- 割り当てるメモリー・ブロックのレイアウト。value
- 新しく割り当てられたメモリー・ブロックに設定する値。- 戻り値:
- 新しく割り当てられたメモリー・ブロックのセグメント。
- 例外:
OutOfMemoryError
- このネイティブ・スコープに十分な領域が残っていない場合、つまり、これがバウンド割当てスコープである場合、およびbyteSize().getAsLong() - allocatedBytes() < layout.byteSize()
である場合。IllegalArgumentException
-layout.byteSize()
がint値のサイズに適合しない場合。
-
allocate
default MemorySegment allocate(ValueLayout layout, float value)指定されたレイアウトでこのネイティブ・スコープのメモリー・ブロックを割り当て、指定されたfloat値で初期化します。 このメソッドによって返されたセグメントは、クローズできないセグメントに関連付けられています。 さらに、返されるセグメントは、レイアウト整列の制約に準拠している必要があります。- パラメータ:
layout
- 割り当てるメモリー・ブロックのレイアウト。value
- 新しく割り当てられたメモリー・ブロックに設定する値。- 戻り値:
- 新しく割り当てられたメモリー・ブロックのセグメント。
- 例外:
OutOfMemoryError
- このネイティブ・スコープに十分な領域が残っていない場合、つまり、これがバウンド割当てスコープである場合、およびbyteSize().getAsLong() - allocatedBytes() < layout.byteSize()
である場合。IllegalArgumentException
-layout.byteSize()
がfloat値のサイズに適合しない場合。
-
allocate
default MemorySegment allocate(ValueLayout layout, long value)指定されたレイアウトでこのネイティブ・スコープのメモリー・ブロックを割り当て、指定されたlong値で初期化します。 このメソッドによって返されたセグメントは、クローズできないセグメントに関連付けられています。 さらに、返されるセグメントは、レイアウト整列の制約に準拠している必要があります。- パラメータ:
layout
- 割り当てるメモリー・ブロックのレイアウト。value
- 新しく割り当てられたメモリー・ブロックに設定する値。- 戻り値:
- 新しく割り当てられたメモリー・ブロックのセグメント。
- 例外:
OutOfMemoryError
- このネイティブ・スコープに十分な領域が残っていない場合、つまり、これがバウンド割当てスコープである場合、およびbyteSize().getAsLong() - allocatedBytes() < layout.byteSize()
である場合。IllegalArgumentException
-layout.byteSize()
がlong値のサイズに適合しない場合。
-
allocate
default MemorySegment allocate(ValueLayout layout, double value)指定されたレイアウトでこのネイティブ・スコープのメモリー・ブロックを割り当て、指定されたdouble値で初期化します。 このメソッドによって返されたセグメントは、クローズできないセグメントに関連付けられています。 さらに、返されるセグメントは、レイアウト整列の制約に準拠している必要があります。- パラメータ:
layout
- 割り当てるメモリー・ブロックのレイアウト。value
- 新しく割り当てられたメモリー・ブロックに設定する値。- 戻り値:
- 新しく割り当てられたメモリー・ブロックのセグメント。
- 例外:
OutOfMemoryError
- このネイティブ・スコープに十分な領域が残っていない場合、つまり、これがバウンド割当てスコープである場合、およびbyteSize().getAsLong() - allocatedBytes() < layout.byteSize()
である場合。IllegalArgumentException
-layout.byteSize()
がdouble値のサイズに適合しない場合。
-
allocate
default MemorySegment allocate(ValueLayout layout, Addressable value)指定されたレイアウトでこのネイティブ・スコープのメモリー・ブロックを割り当て、指定されたアドレス値(Addressable
インスタンスとして表現)で初期化します。 アドレス値は、プラットフォームのアドレス・サイズ(MemoryLayouts.ADDRESS
を参照してください)に応じて絞り込まれることがあります。 このメソッドによって返されたセグメントはクローズできません。 さらに、返されるセグメントは、レイアウト整列の制約に準拠している必要があります。- パラメータ:
layout
- 割り当てるメモリー・ブロックのレイアウト。value
- 新しく割り当てられたメモリー・ブロックに設定する値。- 戻り値:
- 新しく割り当てられたメモリー・ブロックのセグメント。
- 例外:
OutOfMemoryError
- このネイティブ・スコープに十分な領域が残っていない場合、つまり、これがバウンド割当てスコープである場合、およびbyteSize().getAsLong() - allocatedBytes() < layout.byteSize()
である場合。IllegalArgumentException
-layout.byteSize() != MemoryLayouts.ADDRESS.byteSize()
の場合。
-
allocateArray
default MemorySegment allocateArray(ValueLayout elementLayout, byte[] array)指定されたレイアウトでこのネイティブ・スコープのメモリー・ブロックを割り当て、指定されたバイト配列で初期化します。 このメソッドによって返されたセグメントは、クローズできないセグメントに関連付けられています。 さらに、返されるセグメントは、レイアウト整列の制約に準拠している必要があります。- パラメータ:
elementLayout
- 割り当てられる配列の要素レイアウト。array
- 新しく割り当てられたメモリー・ブロックにコピーされる配列。- 戻り値:
- 新しく割り当てられたメモリー・ブロックのセグメント。
- 例外:
OutOfMemoryError
- このネイティブ・スコープに十分な領域が残っていない場合、つまり、これがバウンド割当てスコープである場合、およびbyteSize().getAsLong() - allocatedBytes() < (elementLayout.byteSize() * array.length)
である場合。IllegalArgumentException
-elementLayout.byteSize()
がバイト値のサイズに適合しない場合。
-
allocateArray
default MemorySegment allocateArray(ValueLayout elementLayout, short[] array)指定されたレイアウトでこのネイティブ・スコープのメモリー・ブロックを割り当て、指定されたshort配列で初期化します。 このメソッドによって返されたセグメントは、クローズできないセグメントに関連付けられています。 さらに、返されるセグメントは、レイアウト整列の制約に準拠している必要があります。- パラメータ:
elementLayout
- 割り当てられる配列の要素レイアウト。array
- 新しく割り当てられたメモリー・ブロックにコピーされる配列。- 戻り値:
- 新しく割り当てられたメモリー・ブロックのセグメント。
- 例外:
OutOfMemoryError
- このネイティブ・スコープに十分な領域が残っていない場合、つまり、これがバウンド割当てスコープである場合、およびbyteSize().getAsLong() - allocatedBytes() < (elementLayout.byteSize() * array.length)
である場合。IllegalArgumentException
-elementLayout.byteSize()
がshort値のサイズに適合しない場合。
-
allocateArray
default MemorySegment allocateArray(ValueLayout elementLayout, char[] array)指定されたレイアウトでこのネイティブ・スコープのメモリー・ブロックを割り当て、指定されたchar配列で初期化します。 このメソッドによって返されたセグメントは、クローズできないセグメントに関連付けられています。 さらに、返されるセグメントは、レイアウト整列の制約に準拠している必要があります。- パラメータ:
elementLayout
- 割り当てられる配列の要素レイアウト。array
- 新しく割り当てられたメモリー・ブロックにコピーされる配列。- 戻り値:
- 新しく割り当てられたメモリー・ブロックのセグメント。
- 例外:
OutOfMemoryError
- このネイティブ・スコープに十分な領域が残っていない場合、つまり、これがバウンド割当てスコープである場合、およびbyteSize().getAsLong() - allocatedBytes() < (elementLayout.byteSize() * array.length)
である場合。IllegalArgumentException
-elementLayout.byteSize()
がchar値のサイズに適合しない場合。
-
allocateArray
default MemorySegment allocateArray(ValueLayout elementLayout, int[] array)指定されたレイアウトでこのネイティブ・スコープのメモリー・ブロックを割り当て、指定されたint配列で初期化します。 このメソッドによって返されたセグメントは、クローズできないセグメントに関連付けられています。 さらに、返されるセグメントは、レイアウト整列の制約に準拠している必要があります。- パラメータ:
elementLayout
- 割り当てられる配列の要素レイアウト。array
- 新しく割り当てられたメモリー・ブロックにコピーされる配列。- 戻り値:
- 新しく割り当てられたメモリー・ブロックのセグメント。
- 例外:
OutOfMemoryError
- このネイティブ・スコープに十分な領域が残っていない場合、つまり、これがバウンド割当てスコープである場合、およびbyteSize().getAsLong() - allocatedBytes() < (elementLayout.byteSize() * array.length)
である場合。IllegalArgumentException
-elementLayout.byteSize()
がint値のサイズに適合しない場合。
-
allocateArray
default MemorySegment allocateArray(ValueLayout elementLayout, float[] array)指定されたレイアウトでこのネイティブ・スコープのメモリー・ブロックを割り当て、指定されたfloat配列で初期化します。 このメソッドによって返されたセグメントは、クローズできないセグメントに関連付けられています。 さらに、返されるセグメントは、レイアウト整列の制約に準拠している必要があります。- パラメータ:
elementLayout
- 割り当てられる配列の要素レイアウト。array
- 新しく割り当てられたメモリー・ブロックにコピーされる配列。- 戻り値:
- 新しく割り当てられたメモリー・ブロックのセグメント。
- 例外:
OutOfMemoryError
- このネイティブ・スコープに十分な領域が残っていない場合、つまり、これがバウンド割当てスコープである場合、およびbyteSize().getAsLong() - allocatedBytes() < (elementLayout.byteSize() * array.length)
である場合。IllegalArgumentException
-elementLayout.byteSize()
がfloat値のサイズに適合しない場合。
-
allocateArray
default MemorySegment allocateArray(ValueLayout elementLayout, long[] array)指定されたレイアウトでこのネイティブ・スコープのメモリー・ブロックを割り当て、指定されたlong配列で初期化します。 このメソッドによって返されたセグメントは、クローズできないセグメントに関連付けられています。 さらに、返されるセグメントは、レイアウト整列の制約に準拠している必要があります。- パラメータ:
elementLayout
- 割り当てられる配列の要素レイアウト。array
- 新しく割り当てられたメモリー・ブロックにコピーされる配列。- 戻り値:
- 新しく割り当てられたメモリー・ブロックのセグメント。
- 例外:
OutOfMemoryError
- このネイティブ・スコープに十分な領域が残っていない場合、つまり、これがバウンド割当てスコープである場合、およびbyteSize().getAsLong() - allocatedBytes() < (elementLayout.byteSize() * array.length)
である場合。IllegalArgumentException
-elementLayout.byteSize()
がlong値のサイズに適合しない場合。
-
allocateArray
default MemorySegment allocateArray(ValueLayout elementLayout, double[] array)指定されたレイアウトでこのネイティブ・スコープのメモリー・ブロックを割り当て、指定されたdouble配列で初期化します。 このメソッドによって返されたセグメントは、クローズできないセグメントに関連付けられています。 さらに、返されるセグメントは、レイアウト整列の制約に準拠している必要があります。- パラメータ:
elementLayout
- 割り当てられる配列の要素レイアウト。array
- 新しく割り当てられたメモリー・ブロックにコピーされる配列。- 戻り値:
- 新しく割り当てられたメモリー・ブロックのセグメント。
- 例外:
OutOfMemoryError
- このネイティブ・スコープに十分な領域が残っていない場合、つまり、これがバウンド割当てスコープである場合、およびbyteSize().getAsLong() - allocatedBytes() < (elementLayout.byteSize() * array.length)
である場合。IllegalArgumentException
-elementLayout.byteSize()
がdouble値のサイズに適合しない場合。
-
allocateArray
default MemorySegment allocateArray(ValueLayout elementLayout, Addressable[] array)指定されたレイアウトでこのネイティブ・スコープのメモリー・ブロックを割り当て、指定されたアドレス配列で初期化します。 各配列要素のアドレス値は、プラットフォームのアドレス・サイズ(MemoryLayouts.ADDRESS
を参照してください)に応じて絞り込まれる場合があります。 このメソッドによって返されたセグメントは、クローズできないセグメントに関連付けられています。 さらに、返されるセグメントは、レイアウト整列の制約に準拠している必要があります。- パラメータ:
elementLayout
- 割り当てられる配列の要素レイアウト。array
- 新しく割り当てられたメモリー・ブロックにコピーされる配列。- 戻り値:
- 新しく割り当てられたメモリー・ブロックのセグメント。
- 例外:
OutOfMemoryError
- このネイティブ・スコープに十分な領域が残っていない場合、つまり、これがバウンド割当てスコープである場合、およびbyteSize().getAsLong() - allocatedBytes() < (elementLayout.byteSize() * array.length)
である場合。IllegalArgumentException
-layout.byteSize() != MemoryLayouts.ADDRESS.byteSize()
の場合。
-
allocate
default MemorySegment allocate(MemoryLayout layout)指定されたレイアウトでこのネイティブ・スコープにメモリー・ブロックを割り当てます。 このメソッドによって返されたセグメントは、クローズできないセグメントに関連付けられています。 さらに、返されるセグメントは、レイアウト整列の制約に準拠している必要があります。- パラメータ:
layout
- 割り当てるメモリー・ブロックのレイアウト。- 戻り値:
- 新しく割り当てられたメモリー・ブロックのセグメント。
- 例外:
OutOfMemoryError
- このネイティブ・スコープに十分な領域が残っていない場合、つまり、これがバウンド割当てスコープである場合、およびbyteSize().getAsLong() - allocatedBytes() < layout.byteSize()
である場合。
-
allocateArray
default MemorySegment allocateArray(MemoryLayout elementLayout, long count)指定された要素のレイアウトとサイズを持つ配列に対応するメモリーのブロックを割り当てます。 このメソッドによって返されたセグメントは、クローズできないセグメントに関連付けられています。 さらに、返されるセグメントは、レイアウト整列の制約に準拠している必要があります。 これは次のコードと等価です。allocate(MemoryLayout.ofSequence(size, elementLayout));
- パラメータ:
elementLayout
- 配列要素のレイアウト。count
- 配列要素のカウント。- 戻り値:
- 新しく割り当てられたメモリー・ブロックのセグメント。
- 例外:
OutOfMemoryError
- このネイティブ・スコープに十分な領域が残っていない場合、つまり、これがバウンド割当てスコープである場合、およびbyteSize().getAsLong() - allocatedBytes() < (elementLayout.byteSize() * count)
である場合。
-
allocate
default MemorySegment allocate(long bytesSize)指定されたサイズのメモリー・ブロックをこのネイティブ・スコープに割り当てます。 このメソッドによって返されたセグメントは、クローズできないセグメントに関連付けられています。 さらに、戻されたセグメントをsize
に位置合せする必要があります。- パラメータ:
bytesSize
- 割り当てるメモリー・ブロックのサイズ(バイト単位)。- 戻り値:
- 新しく割り当てられたメモリー・ブロックのセグメント。
- 例外:
OutOfMemoryError
- このネイティブ・スコープに十分な領域が残っていない場合、つまりlimit() - size() < bytesSize
の場合。
-
allocate
MemorySegment allocate(long bytesSize, long bytesAlignment)指定されたサイズと配置の制約を使用して、このネイティブ・スコープにメモリー・ブロックを割り当てます。 このメソッドによって返されたセグメントは、クローズできないセグメントに関連付けられています。 さらに、戻されたセグメントをalignment
に位置合せする必要があります。- パラメータ:
bytesSize
- 割り当てるメモリー・ブロックのサイズ(バイト単位)。bytesAlignment
- 割り当てるメモリー・ブロックの整列(バイト単位)。- 戻り値:
- 新しく割り当てられたメモリー・ブロックのセグメント。
- 例外:
OutOfMemoryError
- このネイティブ・スコープに十分な領域が残っていない場合、つまりlimit() - size() < bytesSize
の場合。
-
close
void close()このネイティブ・スコープをクローズします。このメソッドをコールすると、このネイティブ・スコープを介して取得されたセグメントが使用できなくなり、このネイティブ・スコープに関連付けられたバッキング・メモリー・リソースが解放される可能性があります。- 定義:
close
、インタフェース:AutoCloseable
-
boundedScope
static NativeScope boundedScope(long size)オフ・ヒープ・メモリーによってサポートされる新しいバウンド固有のスコープを作成します。- パラメータ:
size
- ネイティブ・スコープのサイズ。- 戻り値:
- 指定されたサイズの(バイト単位)を持つ新しいバウンド・ネイティブ・スコープ。
-
unboundedScope
static NativeScope unboundedScope()オフ・ヒープ・メモリーによってバッキングされる新しい無制限ネイティブ・スコープを作成します。- 戻り値:
- 新しい無制限のネイティブ・スコープ。
-