モジュール jdk.incubator.foreign
パッケージ jdk.incubator.foreign

インタフェースMemorySegment

すべてのスーパー・インタフェース:
Addressable

public sealed interface MemorySegment extends Addressable
メモリー・セグメントは、連続するメモリー・リージョンをモデル化します。 メモリー・セグメントは、空間および時間境界(例: ResourceScope)の両方に関連付けられています。 空間境界は、メモリー・セグメントに対するメモリー・アクセス操作が、「外部」にアクセスされるメモリー・セグメントの境界よりも少ないメモリーのロケーションに影響を与えないようにします。 一時的な境界により、メモリー・セグメントに関連付けられたリソース・スコープが(ResourceScope.close()を参照してください)をクローズした後に、セグメントのメモリー・アクセス操作が発生しないようにします。

このインタフェースのすべての実装はvalue-basedである必要があります。プログラマは、equalのインスタンスを交換可能として扱う必要があり、同期にインスタンスを使用しないでください。そうしないと、予期しない動作が発生する可能性があります。 たとえば、将来のリリースでは、同期が失敗する可能性があります。 比較する場合は、equalsメソッドを使用することをお薦めします。

非プラットフォーム・クラスは、MemorySegmentを直接実装することはできません。

特に指定がないかぎり、null引数、またはこのクラスのメソッドに1つ以上のnull要素を含む配列引数を渡すと、NullPointerExceptionがスローされます。

メモリー・セグメントの構築

メモリー・セグメントを取得する方法は複数あります。 最初に、提供される数多くのファクトリ・メソッドのいずれかを使用して、ヒープ外メモリーによってバックアップされるメモリー・セグメントを割り当てることができます (allocateNative(MemoryLayout, ResourceScope)allocateNative(long, ResourceScope)およびallocateNative(long, long, ResourceScope)を参照してください。)。 この方法で取得されたメモリー・セグメントは「ネイティブ・メモリー・セグメント」と呼ばれます。

また、用意されているファクトリ・メソッド(e.g. ofArray(int[]))のいずれかを使用して、既存のヒープ割当てJava配列に連動するメモリー・セグメントを取得することもできます。 この方法で取得されたメモリー・セグメントは「配列メモリー・セグメント」と呼ばれます。

ofByteBuffer(ByteBuffer)ファクトリ・メソッドを使用して、既存のJavaバイト・バッファ(ByteBufferを参照してください)に連動するメモリー・セグメントを取得できます。 この方法で取得されたメモリー・セグメントは「バッファ・メモリー・セグメント」と呼ばれます。 バッファ・メモリー・セグメントは、セグメントが関連付けられているバイト・バッファ・インスタンスの特性に応じて、システム固有のメモリー(ネイティブ・メモリー・セグメントの場合と同様)またはヒープ・メモリー(配列メモリー・セグメントの場合と同様)によってバッキングされる場合があります。 たとえば、ByteBuffer.allocateDirect(int)メソッドで作成されたバイト・バッファから取得されたバッファ・メモリー・セグメントは、ネイティブ・メモリーによってバックアップされます。

ファイルからのメモリー・セグメントのマッピング

また、ファクトリ・メソッドmapFile(Path, long, long, FileChannel.MapMode, ResourceScope)を使用して、メモリー・マップ・ファイルによって支えられたネイティブ・メモリー・セグメントを取得することもできます。 このようなネイティブ・メモリー・セグメントは「マッピングされたメモリー・セグメント」と呼ばれ、マップされたメモリー・セグメントは基礎となるファイル記述子に関連付けられます。

マップされたメモリー・セグメントの内容は、基礎となるファイルへの「永続」および「読み込み完了」です。これらの機能は、MappedByteBufferクラスの一部の機能に適した置換です。 セグメントをバイト・バッファ(asByteBuffer()を参照してください)にマップし、MappedByteBuffer.force()のようにコールできますが、これは、ByteBuffer APIに固有のサイズ制限のため、ソース・セグメントが十分小さい場合にのみ実行できます。

マップされたメモリー・セグメントに対する高度な低レベル制御を必要とするクライアントは、カスタム・マップされたメモリー・セグメント・ファクトリを記述することを検討する必要があります。たとえば、Linuxでは、mmapを必要なパラメータでコールできます。戻されたアドレスは、MemoryAddress.ofLong(long)およびofAddress(MemoryAddress, long, ResourceScope)を使用して簡単にメモリー・セグメントにラップできます。

制限されたネイティブ・セグメント

場合によっては、ネイティブ・コードから取得したメモリー・アドレスを、完全な空間、時間、および制限の境界を持つメモリー・セグメントに変換する必要があります。 このため、クライアントは、セグメント・サイズおよびセグメントscopeを指定して、指定されたメモリー・アドレスからネイティブ・セグメント「不安」obtainできます。 これは制限付き操作であり、注意して使用する必要があります: たとえば、セグメント・サイズが正しくないと、メモリー・セグメントを間接参照しようとすると、VMがクラッシュする可能性があります。

間接参照

メモリー・セグメントは、このクラス(e.g. get(ValueLayout.OfInt, long))で提供される様々なメソッドを使用して読取りまたは書込みできます。 各間接参照メソッドは、「値レイアウト」(サイズ、整列制約、バイト順序および間接参照操作に関連付けられたJavaタイプ、およびオフセットを指定する)を取ります。 たとえば、default endiannessを使用してセグメントからintを読み取るには、次のコードを使用できます:
MemorySegment segment = ...
int value = segment.get(ValueLayout.JAVA_INT, 0);
読み取る値がbig-endianエンコーディングを使用してメモリーに格納されている場合、間接参照操作を次のように表すことができます:
MemorySegment segment = ...
int value = segment.get(ValueLayout.JAVA_INT.withOrder(BIG_ENDIAN), 0);
より複雑な間接参照操作(例:構造化されたメモリー・アクセス)の場合、クライアントは「メモリー・アクセス変数ハンドル」(つまり、セグメントを受け入れ、オプションで1つ以上の追加のlong座標を受け入れるvarハンドル)を取得できます。 メモリー・アクセスのvarハンドルは、レイアウト・パスというように指定することによって「メモリー・レイアウト」から取得できます。 または、クライアントは、指定された「値レイアウト」からRAWメモリー・アクセスvarハンドルを取得し、MemoryHandlesクラスで定義されたvarハンドル・コンビネータ関数を使用してそれを適応できます。

位置合せ

レイアウトを使用してメモリー・セグメントを参照解除する場合、ランタイムは、参照解除されるセグメント・アドレスがレイアウト「線形拘束」と一致していることを確認する必要があります。 参照解除されるセグメントがネイティブ・セグメントの場合、配列チェックの実行に使用できる具体的な「基本アドレス」があります。 次の擬似関数では、次のようになります:

boolean isAligned(MemorySegment segment, long offset, MemoryLayout layout) {
   return ((segment.address().toRawLongValue() + offset) % layout.byteAlignment()) == 0
}
 
ただし、参照解除されるセグメントがヒープ・セグメントである場合、前述の関数は機能しません: ヒープ・セグメントのベース・アドレスは「仮想化」であるため、アライメント・チェックの構成には使用できません。 かわりに、次の表に示すように、ヒープ・セグメントは、発生したJava配列の要素サイズよりも整列されていないアドレスを生成すると想定されます:
セグメントとそのアドレス調整を裏付ける配列の配列タイプ
配列型 位置合せ
boolean[] 1
byte[] 1
char[] 2
short[] 2
int[] 4
float[] 4
long[] 8
double[] 8
前述の定義は保守的であることに注意してください: たとえば、byte[]から構築されたヒープ・セグメントにアドレスSのサブセットがあり、そのサブセットは8バイトの整列になります。 ただし、どのセグメント・アドレスがSに属するかを決定するには、最終的に実装に依存する詳細について推論する必要があります。

ライフサイクルおよび制約

メモリー・セグメントは、scope()メソッドを使用してアクセスできるリソース・スコープ(ResourceScopeを参照してください)に関連付けられています。 リソース・スコープに関連付けられているすべてのリソースについて、対応するスコープが閉じられた後にセグメントにアクセスすることはできません。 たとえば、次のコードは例外になります:
MemorySegment segment = null;
try (ResourceScope scope = ResourceScope.newConfinedScope()) {
    segment = MemorySegment.allocateNative(8, scope);
}
segment.get(ValueLayout.JAVA_LONG, 0); // already closed!
また、メモリー・セグメントへのアクセスは、所有スコープによって強制されるスレッド調整チェックの対象となります。つまり、セグメントが共有スコープに関連付けられている場合は、複数のスレッドからアクセスできます。制限されたスコープに関連付けられている場合は、スコープを所有するスレッドのみがアクセスできます。

ヒープ・セグメントとバッファ・セグメントは、常に「グローバル」共有スコープに関連付けられます。 このスコープはクローズできず、関連付けられたセグメントは「いつも生きている」とみなされます。

メモリー・セグメント・ビュー

メモリー・セグメントは「ビュー」をサポートしています。 たとえば、次のように、メモリー・セグメントの「不変」ビューを作成できます:
MemorySegment segment = ...
MemorySegment roSegment = segment.asReadOnly();
空間境界が元のセグメント(asSlice(long, long)を参照してください)のものより厳密であるビューを作成することもできます。

元のセグメントの一時的な境界はビューによって継承されます。つまり、セグメントに関連付けられたスコープが閉じられると、そのセグメントに関連付けられたすべてのビューにアクセスできなくなります。

既存のコードとの相互運用性を確保するために、バイト・バッファ・ビューはメモリー・セグメント(asByteBuffer()を参照してください)から取得できます。 これは、たとえばByteBuffer APIを使用したままにする必要があるクライアントでは有用ですが、大量のメモリー・セグメントで操作する必要があります。 このような方法で取得したバイトは、元のメモリー・セグメントに関連付けられた同じ空間および時間アクセス制限をサポートします。

ストリーム・サポート

クライアントがセグメントからStreamを取得すると、セグメント(特定の要素レイアウトに従って)をスライスし、複数のスレッドを分離したセグメント・スライス(このためには、セグメントを共有スコープに関連付ける必要があります)に対して並行して作業できます。 次のコードを使用すると、メモリー・セグメント内のすべてのint値を並列に合計できます:
try (ResourceScope scope = ResourceScope.newSharedScope()) {
    SequenceLayout SEQUENCE_LAYOUT = MemoryLayout.sequenceLayout(1024, ValueLayout.JAVA_INT);
    MemorySegment segment = MemorySegment.allocateNative(SEQUENCE_LAYOUT, scope);
    int sum = segment.elements(ValueLayout.JAVA_INT).parallel()
                     .mapToInt(s -> s.get(ValueLayout.JAVA_INT, 0))
                     .sum();
}
実装要件:
このインタフェースの実装は不変、スレッド・セーフ、およびvalue-basedです。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    このネイティブ・メモリー・セグメントに関連付けられたベース・メモリー・アドレスを返します。
    allocateNative(long bytesSize, long alignmentBytes, ResourceScope scope)
    指定されたサイズ(バイト単位)、整列制約(バイト単位)およびリソース・スコープのオフ・ヒープ・メモリーの新しい割当て済ブロックをモデル化する新しいネイティブ・メモリー・セグメントを作成します。
    allocateNative(long bytesSize, ResourceScope scope)
    指定されたサイズ(バイト単位)およびリソース・スコープのオフ・ヒープ・メモリーの新しい割当て済ブロックをモデル化する新しいネイティブ・メモリー・セグメントを作成します。
    指定されたレイアウトおよびリソース・スコープで、新しく割り当てられたオフ・ヒープ・メモリーのブロックをモデル化する新しいネイティブ・メモリー・セグメントを作成します。
    ByteBufferでこのセグメントをラップします。
    このセグメントと指定されたセグメントの間の重複である、このセグメントのスライスを返します。
    このセグメントの読取り専用ビューを取得します。
    asSlice(long offset)
    ベース・アドレスがこのセグメントのベース・アドレスに指定されたオフセットを加えたものと同じであり、その新しいサイズがこのセグメント・サイズから指定されたオフセットを引いて計算される新しいメモリー・セグメント・ビューを取得します。
    asSlice(long offset, long newSize)
    ベース・アドレスがこのセグメントのベース・アドレスと指定されたオフセットに加えて、指定の引数で新しいサイズが指定されている、新しいメモリー・セグメントのビューを取得します。
    long
    このメモリー・セグメントのサイズ(バイト単位)を返します。
    static void
    copy(Object srcArray, int srcIndex, MemorySegment dstSegment, ValueLayout dstLayout, long dstOffset, int elementCount)
    指定された宛先要素レイアウトを使用して、ソース配列から宛先セグメントに多数の要素をコピーし、指定された配列索引から、指定されたセグメント・オフセット(バイトで表されます)から開始します。
    static void
    copy(MemorySegment srcSegment, long srcOffset, MemorySegment dstSegment, long dstOffset, long bytes)
    ソース・セグメントから宛先セグメントへの一括コピーを実行します。
    static void
    copy(MemorySegment srcSegment, ValueLayout srcLayout, long srcOffset, Object dstArray, int dstIndex, int elementCount)
    指定されたソース要素レイアウトを使用して、ソース・セグメントから宛先配列に多数の要素をコピーし、指定されたセグメント・オフセット(バイトで表されます)および特定の配列索引から開始します。
    static void
    copy(MemorySegment srcSegment, ValueLayout srcElementLayout, long srcOffset, MemorySegment dstSegment, ValueLayout dstElementLayout, long dstOffset, long elementCount)
    ソース・セグメントから宛先セグメントへの一括コピーを実行します。
    指定されたソース・セグメントからこのセグメントへの一括コピーを実行します。
    elements(MemoryLayout elementLayout)
    このセグメント内の分離スライス(指定したレイアウトのサイズと一致するサイズ)に対して連続したStreamを返します。
    fill(byte value)
    このメモリー・セグメントに値を入力します。
    void
    マップされたセグメント・ファイル記述子によって記述されたストレージ・デバイスに、このマップされたセグメントの内容に加えた変更を強制的に書き込みます。
    get(ValueLayout.OfAddress layout, long offset)
    このセグメントから住所を読み取り、指定されたレイアウトでオフセットします。
    default boolean
    get(ValueLayout.OfBoolean layout, long offset)
    このセグメントからブール値を読み取り、特定のレイアウトでオフセットします。
    default byte
    get(ValueLayout.OfByte layout, long offset)
    このセグメントからバイトを読み取り、指定されたレイアウトでオフセットします。
    default char
    get(ValueLayout.OfChar layout, long offset)
    このセグメントからcharを読み取り、指定されたレイアウトでオフセットします。
    default double
    get(ValueLayout.OfDouble layout, long offset)
    このセグメントから倍精度浮動小数点数を読み取り、特定のレイアウトでオフセットします。
    default float
    get(ValueLayout.OfFloat layout, long offset)
    このセグメントから浮動小数点を読み取り、特定のレイアウトでオフセットします。
    default int
    get(ValueLayout.OfInt layout, long offset)
    このセグメントからintを読み取り、特定のレイアウトでオフセットします。
    default long
    get(ValueLayout.OfLong layout, long offset)
    このセグメントから長時間、および指定されたレイアウトでオフセットを読み取ります。
    default short
    get(ValueLayout.OfShort layout, long offset)
    このセグメントから短く、指定したレイアウトでオフセットを読み取ります。
    getAtIndex(ValueLayout.OfAddress layout, long index)
    指定されたレイアウト・サイズでスケーリングされた、このセグメントおよび索引からアドレスを読み取ります。
    default char
    getAtIndex(ValueLayout.OfChar layout, long index)
    指定されたレイアウト・サイズでスケーリングされた、このセグメントおよび索引からcharを読み取ります。
    default double
    getAtIndex(ValueLayout.OfDouble layout, long index)
    指定されたレイアウト・サイズでスケーリングされた、このセグメントおよび索引から倍精度浮動小数点数を読み取ります。
    default float
    getAtIndex(ValueLayout.OfFloat layout, long index)
    このセグメントおよび索引から浮動小数点を読み取り、特定のレイアウト・サイズでスケーリングします。
    default int
    getAtIndex(ValueLayout.OfInt layout, long index)
    このセグメントおよび索引から、特定のレイアウト・サイズでスケーリングされたintを読み取ります。
    default long
    getAtIndex(ValueLayout.OfLong layout, long index)
    このセグメントおよび索引から、特定のレイアウト・サイズでスケーリングされた長い値を読み取ります。
    default short
    getAtIndex(ValueLayout.OfShort layout, long index)
    このセグメントおよび索引から、特定のレイアウト・サイズでスケーリングされた短い値を読み取ります。
    default String
    getUtf8String(long offset)
    指定されたオフセットで、このセグメントからUTF-8でエンコードされたNULL終了文字列を読み取ります。
    boolean
    このマップされたセグメントの内容が物理メモリーに存在するかどうかを決定します。
    boolean
    このセグメントがマップされたセグメントの場合は、trueを返します。
    boolean
    このセグメントがネイティブ・セグメントの場合は、trueを返します。
    boolean
    このセグメントが読取り専用の場合、trueを返します。
    void
    このマップされたセグメントの内容を物理メモリーにロードします。
    mapFile(Path path, long bytesOffset, long bytesSize, FileChannel.MapMode mapMode, ResourceScope scope)
    指定されたパスからファイルのメモリー・マップのリージョンをモデル化する、新しいマップ済メモリー・セグメントを作成します。
    long
    このセグメントと指定された他のセグメント間の最初の不一致のオフセットをバイト単位で検索して返します。
    ofAddress(MemoryAddress address, long bytesSize, ResourceScope scope)
    指定されたサイズとリソース・スコープで、ベース・アドレスが指定されたアドレスを持つ新しいネイティブ・メモリー・セグメントを作成します。
    ofArray(byte[] arr)
    指定のヒープ割当てバイト配列に関連付けられたメモリーをモデル化する新しい配列メモリー・セグメントを作成します。
    ofArray(char[] arr)
    指定のヒープ割当て文字配列に関連付けられたメモリーをモデル化する新しい配列メモリー・セグメントを作成します。
    ofArray(double[] arr)
    指定のヒープ割当て済二重配列に関連付けられたメモリーをモデル化する新しい配列メモリー・セグメントを作成します。
    ofArray(float[] arr)
    指定のヒープ割当て浮動小数配列に関連付けられたメモリーをモデル化する新しい配列メモリー・セグメントを作成します。
    ofArray(int[] arr)
    指定のヒープ割当て済int配列に関連付けられているメモリーをモデル化する新しい配列メモリー・セグメントを作成します。
    ofArray(long[] arr)
    指定のヒープ割当て済ロング配列に関連付けられているメモリーをモデル化する新しい配列メモリー・セグメントを作成します。
    ofArray(short[] arr)
    指定のヒープ割当て済短い配列に関連付けられたメモリーをモデル化する新しい配列メモリー・セグメントを作成します。
    指定されたバイト・バッファに関連付けられたメモリーをモデル化する新しいバッファ・メモリー・セグメントを作成します。
    このメモリー・セグメントに関連付けられたリソース・スコープを返します。
    long
    このセグメントに対して指定されたセグメントのオフセット(バイト単位)を返します。
    default void
    set(ValueLayout.OfAddress layout, long offset, Addressable value)
    アドレスをこのセグメントに書き込み、指定されたレイアウトでオフセットします。
    default void
    set(ValueLayout.OfBoolean layout, long offset, boolean value)
    このセグメントにブール値を書き込み、指定されたレイアウトでオフセットします。
    default void
    set(ValueLayout.OfByte layout, long offset, byte value)
    このセグメントにバイトを書き込み、指定されたレイアウトでオフセットします。
    default void
    set(ValueLayout.OfChar layout, long offset, char value)
    このセグメントにcharを書き込み、指定されたレイアウトでオフセットします。
    default void
    set(ValueLayout.OfDouble layout, long offset, double value)
    このセグメントに倍精度で書き込み、指定されたレイアウトでオフセットします。
    default void
    set(ValueLayout.OfFloat layout, long offset, float value)
    このセグメントに浮動小数点を書き込み、指定されたレイアウトでオフセットします。
    default void
    set(ValueLayout.OfInt layout, long offset, int value)
    このセグメントにintを書き込み、指定されたレイアウトでオフセットします。
    default void
    set(ValueLayout.OfLong layout, long offset, long value)
    このセグメントに長い時間を書き込み、指定されたレイアウトでオフセットします。
    default void
    set(ValueLayout.OfShort layout, long offset, short value)
    このセグメントに短くなり、指定したレイアウトでオフセットが書き込まれます。
    default void
    setAtIndex(ValueLayout.OfAddress layout, long index, Addressable value)
    指定されたレイアウト・サイズでスケーリングされたアドレスをこのセグメントおよび索引に書き込みます。
    default void
    setAtIndex(ValueLayout.OfChar layout, long index, char value)
    このセグメントおよび索引にcharを書き込み、特定のレイアウト・サイズでスケーリングします。
    default void
    setAtIndex(ValueLayout.OfDouble layout, long index, double value)
    指定されたレイアウト・サイズでスケーリングされた、このセグメントおよび索引に倍精度で書込みを行います。
    default void
    setAtIndex(ValueLayout.OfFloat layout, long index, float value)
    特定のレイアウト・サイズでスケーリングされた、このセグメントおよび索引に浮動小数点を書き込みます。
    default void
    setAtIndex(ValueLayout.OfInt layout, long index, int value)
    このセグメントおよび索引にintを書き込み、特定のレイアウト・サイズでスケーリングします。
    default void
    setAtIndex(ValueLayout.OfLong layout, long index, long value)
    このセグメントおよび索引に長い時間を書き込み、特定のレイアウト・サイズでスケーリングします。
    default void
    setAtIndex(ValueLayout.OfShort layout, long index, short value)
    このセグメントおよび索引に短い値を書き込み、特定のレイアウト・サイズでスケーリングします。
    default void
    setUtf8String(long offset, String str)
    指定された文字列を指定されたオフセット時にこのセグメントに書き込み、UTF-8エンコーディングを使用してNULLで終了したバイト・シーケンスに変換します。
    spliterator(MemoryLayout elementLayout)
    このメモリー・セグメントのスプリッテレータを返します。
    byte[]
    toArray(ValueLayout.OfByte elementLayout)
    このメモリー・セグメントの内容を新しいバイト配列にコピーします。
    char[]
    toArray(ValueLayout.OfChar elementLayout)
    このメモリー・セグメントの内容を新しいchar配列にコピーします。
    double[]
    このメモリー・セグメントの内容を新しいdouble配列にコピーします。
    float[]
    このメモリー・セグメントの内容を新しいfloat配列にコピーします。
    int[]
    toArray(ValueLayout.OfInt elementLayout)
    このメモリー・セグメントの内容を新しいint配列にコピーします。
    long[]
    toArray(ValueLayout.OfLong elementLayout)
    このメモリー・セグメントの内容を新しいlong配列にコピーします。
    short[]
    このメモリー・セグメントの内容を新しいshort配列にコピーします。
    void
    このマップされたセグメントの内容を物理メモリーからアンロードします。
  • メソッドの詳細

    • address

      MemoryAddress address()
      このネイティブ・メモリー・セグメントに関連付けられたベース・メモリー・アドレスを返します。
      定義:
      インタフェースAddressable内のaddress
      戻り値:
      このネイティブ・メモリー・セグメントに関連付けられたベース・メモリー・アドレス
      例外:
      UnsupportedOperationException - このセグメントが「ネイティブ」セグメントでない場合。
      IllegalStateException - このセグメントに関連付けられたスコープがクローズされている場合、またはそのスコープを所有するスレッド以外のスレッドからアクセスが発生した場合。
    • spliterator

      Spliterator<MemorySegment> spliterator(MemoryLayout elementLayout)
      このメモリー・セグメントのスプリッテレータを返します。 返されるスプリッテレータは、Spliterator.SIZEDSpliterator.SUBSIZEDSpliterator.IMMUTABLESpliterator.NONNULLおよびSpliterator.ORDEREDの特性を報告します。

      返される分割子は、指定された要素レイアウトに従ってこのセグメントを分割します。つまり、指定されたレイアウトのサイズがNの場合、Spliterator.trySplit()をコールすると、約S/N要素(nが偶数かどうかによって異なります) (Sはこのセグメントのサイズ)に分かれます。 そのため、S/N >= 2であれば分割が可能です。 分割子は、このセグメントと同じスコープに関連付けられたセグメントを返します。

      返されたスプリケータでは、このセグメントを非結合「スライス」に効果的にスライスできます。これにより、複数のスレッドでパラレルに処理できます。

      パラメータ:
      elementLayout - 分割に使用されるレイアウト。
      戻り値:
      このセグメントの要素スプリッテレータ
      例外:
      IllegalArgumentException - elementLayoutサイズがゼロの場合、またはセグメント・サイズがモジュール化された場合は、elementLayoutサイズがゼロより大きいか、指定したレイアウトでこのセグメントが「線形拘束と互換性がありません」の場合、またはelementLayout整列がそのサイズより大きい場合。
    • elements

      Stream<MemorySegment> elements(MemoryLayout elementLayout)
      このセグメント内の分離スライス(指定したレイアウトのサイズと一致するサイズ)に対して連続したStreamを返します。 このメソッドの呼出しは、次のコードと同じです:
      StreamSupport.stream(segment.spliterator(elementLayout), false);
      
      パラメータ:
      elementLayout - 分割に使用されるレイアウト。
      戻り値:
      このセグメント内の連続したStreamスライス。
      例外:
      IllegalArgumentException - elementLayoutサイズがゼロの場合、またはセグメント・サイズがモジュール化された場合は、elementLayoutサイズがゼロより大きいか、指定したレイアウトでこのセグメントが「線形拘束と互換性がありません」の場合、またはelementLayout整列がそのサイズより大きい場合。
    • scope

      ResourceScope scope()
      このメモリー・セグメントに関連付けられたリソース・スコープを返します。
      戻り値:
      このメモリー・セグメントに関連付けられたリソース・スコープ
    • byteSize

      long byteSize()
      このメモリー・セグメントのサイズ(バイト単位)を返します。
      戻り値:
      このメモリー・セグメントのサイズ(バイト単位)
    • asSlice

      MemorySegment asSlice(long offset, long newSize)
      ベース・アドレスがこのセグメントのベース・アドレスと指定されたオフセットに加えて、指定の引数で新しいサイズが指定されている、新しいメモリー・セグメントのビューを取得します。
      パラメータ:
      offset - 新しいセグメント・ベース・オフセット(現在のセグメント・ベース・アドレスとの相対)(バイト単位)です。
      newSize - 新しいセグメント・サイズ(バイト単位で指定)。
      戻り値:
      ベース/制限アドレスが更新された新しいメモリー・セグメント・ビュー。
      例外:
      IndexOutOfBoundsException - offset < 0offset > byteSize()newSize < 0またはnewSize > byteSize() - offsetの場合
      関連項目:
    • asSlice

      default MemorySegment asSlice(long offset)
      ベース・アドレスがこのセグメントのベース・アドレスに指定されたオフセットを加えたものと同じであり、その新しいサイズがこのセグメント・サイズから指定されたオフセットを引いて計算される新しいメモリー・セグメント・ビューを取得します。

      次のコードと同等です:

      asSlice(offset, byteSize() - offset);
      

      パラメータ:
      offset - 新しいセグメント・ベース・オフセット(現在のセグメント・ベース・アドレスとの相対)(バイト単位)です。
      戻り値:
      ベース/制限アドレスが更新された新しいメモリー・セグメント・ビュー。
      例外:
      IndexOutOfBoundsException - if offset < 0,またはoffset > byteSize()
      関連項目:
    • isReadOnly

      boolean isReadOnly()
      このセグメントが読取り専用の場合、trueを返します。
      戻り値:
      true:このセグメントが読取り専用の場合
      関連項目:
    • asReadOnly

      MemorySegment asReadOnly()
      このセグメントの読取り専用ビューを取得します。 結果のセグメントはこのセグメントと同一になりますが、返されたセグメントの内容を上書きしようとすると、ランタイム例外が発生します。
      戻り値:
      このセグメントの読取り専用ビュー
      関連項目:
    • isNative

      boolean isNative()
      このセグメントがネイティブ・セグメントの場合は、trueを返します。 ネイティブ・メモリー・セグメントは、allocateNative(long, ResourceScope) (および関連)ファクトリ、またはofByteBuffer(ByteBuffer)ファクトリを使用して直接ByteBufferから導出されたバッファ・セグメント、またはこれが「マップ済」セグメントである場合に作成されます。
      戻り値:
      このセグメントがネイティブ・セグメントの場合はtrue
    • isMapped

      boolean isMapped()
      このセグメントがマップされたセグメントの場合は、trueを返します。 マップされたメモリー・セグメントは、mapFile(Path, long, long, FileChannel.MapMode, ResourceScope)ファクトリ、またはofByteBuffer(ByteBuffer)ファクトリを使用してMappedByteBufferから導出されたバッファ・セグメントを使用して作成されます。
      戻り値:
      このセグメントがマップされたセグメントである場合はtrue
    • asOverlappingSlice

      MemorySegment asOverlappingSlice(MemorySegment other)
      このセグメントと指定されたセグメントの間の重複である、このセグメントのスライスを返します。

      2つのセグメントS1およびS2は、同じメモリー・リージョンにバックアップされている少なくとも2つのスライスL1 (S1から)およびL2 (S2から)が見つかった場合、オー・バー・ラップするとみなされます。 そのため、nativeセグメントをヒープ・セグメントと重複させることはできません。この場合、または重複が発生しない場合、nullが返されます。

      パラメータ:
      other - このセグメントとの重複をテストするセグメント。
      戻り値:
      このセグメントのスライス、または重複が発生しない場合はnull
    • segmentOffset

      long segmentOffset(MemorySegment other)
      このセグメントに対して指定されたセグメントのオフセット(バイト単位)を返します。

      オフセットは、このセグメントのベース・アドレスに対する相対的な値であり、負または正の値にできます。 たとえば、両方のセグメントがネイティブ・セグメントの場合、結果のオフセットは次のように計算できます:

      other.baseAddress().toRawLongValue() - segment.baseAddress().toRawLongValue()
      
      セグメントが同じベース・アドレスを共有している場合、0が返されます。 otherがこのセグメントのスライスである場合、オフセットは常に0 <= x < this.byteSize()です。

      パラメータ:
      other - オフセットを取得するセグメント。
      戻り値:
      指定されたセグメントの相対オフセット(バイト単位)。
    • fill

      MemorySegment fill(byte value)
      このメモリー・セグメントに値を入力します。

      具体的には、指定された値がこのセグメントの各アドレスに入力されます。 (ただし、より効率的である可能性があります。)と同等のコードは次のとおりです:

      byteHandle = MemoryLayout.ofSequence(ValueLayout.JAVA_BYTE)
              .varHandle(byte.class, MemoryLayout.PathElement.sequenceElement());
      for (long l = 0; l < segment.byteSize(); l++) {
          byteHandle.set(segment.address(), l, value);
      }
      
      設定される特定のメモリー要素の順序を考慮または保証しません。

      フィルは、セグメントのメモリーを初期化またはリセットする場合に便利です。

      パラメータ:
      value - このセグメントに入力する値
      戻り値:
      このメモリー・セグメント
      例外:
      IllegalStateException - このセグメントに関連付けられたスコープがクローズされている場合、またはそのスコープを所有するスレッド以外のスレッドからアクセスが発生した場合。
      UnsupportedOperationException - このセグメントが読取り専用(isReadOnly()を参照してください)の場合。
    • copyFrom

      default MemorySegment copyFrom(MemorySegment src)
      指定されたソース・セグメントからこのセグメントへの一括コピーを実行します。 具体的には、ソース・セグメントのオフセット0からsrc.byteSize() - 1までのバイトは、src.byteSize() - 1を介したオフセット0でこのセグメントにコピーされます。

      このメソッドの呼出しは、次のコードと同じです:

      MemorySegment.copy(src, 0, this, 0, src.byteSize);
      

      パラメータ:
      src - ソース・セグメント。
      戻り値:
      このセグメント。
      例外:
      IndexOutOfBoundsException - src.byteSize() > this.byteSize()の場合。
      IllegalStateException - ソース・セグメントに関連付けられたスコープまたはこのセグメントに関連付けられたスコープがすでにクローズされている場合、またはどちらか一方のスコープを所有するスレッド以外のスレッドからアクセスが発生した場合。
      UnsupportedOperationException - このセグメントが読取り専用(isReadOnly()を参照してください)の場合。
    • mismatch

      long mismatch(MemorySegment other)
      このセグメントと指定された他のセグメント間の最初の不一致のオフセットをバイト単位で検索して返します。 オフセットは各セグメントの「拠点アドレス」を基準とし、0 (inclusive)から小さいメモリー・セグメント(exclusive)のsize (バイト単位)までの範囲になります。

      2つのセグメントが共通プリフィクスを共有している場合、返されるオフセットは共通プリフィクスの長さであり、それぞれのセグメント内のそのオフセットで2つのセグメント間に不一致があることが後続しています。 1つのセグメントがもう一方のセグメントの適切なプレフィクスである場合、返されるオフセットはセグメント・サイズの最小値であり、オフセットは大きいセグメントに対してのみ有効です。 それ以外の場合、不一致はなく、 -1が返されます。

      パラメータ:
      other - このセグメントとの不一致をテストするセグメント
      戻り値:
      このセグメントと指定された他のセグメント間の最初の不一致の相対オフセット(バイト)。不一致がない場合は -1
      例外:
      IllegalStateException - このセグメントに関連付けられたスコープまたはotherセグメントに関連付けられたスコープがすでにクローズされている場合、またはどちらか一方のスコープを所有するスレッド以外のスレッドからアクセスが発生した場合。
    • isLoaded

      boolean isLoaded()
      このマップされたセグメントの内容が物理メモリーに存在するかどうかを決定します。

      trueの戻り値は、このセグメント内のすべてのデータが物理メモリーに常駐している可能性が高いため、仮想メモリー・ページ・フォルトやI/O操作を行わずにアクセスできる可能性があることを意味します。 戻り値のfalseは、このセグメント・コンテンツが物理メモリーに存在していないことを必ずしも意味しません。

      返される値は、保証ではなくヒントです。これは、基礎となるオペレーティング・システムが、このメソッドを呼び出したときにこのセグメント・データの一部をページアウトしたためです。

      戻り値:
      このセグメントの内容が物理メモリーに存在する可能性がある場合はtrue
      例外:
      IllegalStateException - このセグメントに関連付けられたスコープがクローズされている場合、またはそのスコープを所有するスレッド以外のスレッドからアクセスが発生した場合。
      UnsupportedOperationException - このセグメントがマップされたメモリー・セグメントでない場合(例: isMapped() == false)。
    • load

      void load()
      このマップされたセグメントの内容を物理メモリーにロードします。

      このメソッドを使用すると、このセグメントのこの内容が物理メモリーに常駐していることを確認できます。 このメソッドを呼び出すと、ページ違反や入出力操作が発生する可能性があります。

      例外:
      IllegalStateException - このセグメントに関連付けられたスコープがクローズされている場合、またはそのスコープを所有するスレッド以外のスレッドからアクセスが発生した場合。
      UnsupportedOperationException - このセグメントがマップされたメモリー・セグメントでない場合(例: isMapped() == false)。
    • unload

      void unload()
      このマップされたセグメントの内容を物理メモリーからアンロードします。

      このメソッドは、このセグメントのコンテンツが物理メモリーに存在しなくなるように最善の努力をします。 このメソッドを呼び出した後にこのセグメントの内容にアクセスすると、いくつかのページ・フォルトおよびI/O操作が(このセグメント・コンテンツはページ・インする必要がある可能性があるため)に発生する可能性があります。

      例外:
      IllegalStateException - このセグメントに関連付けられたスコープがクローズされている場合、またはそのスコープを所有するスレッド以外のスレッドからアクセスが発生した場合。
      UnsupportedOperationException - このセグメントがマップされたメモリー・セグメントでない場合(例: isMapped() == false)。
    • force

      void force()
      マップされたセグメント・ファイル記述子によって記述されたストレージ・デバイスに、このマップされたセグメントの内容に加えた変更を強制的に書き込みます。

      このマップされたセグメントに関連付けられているファイル記述子がローカル・ストレージ・デバイスに存在する場合、このメソッドが返すとき、このセグメントが作成されてからこのセグメントに加えられたすべての変更、またはこのメソッドが最後に呼び出されてから、そのデバイスに書き込まれていることが保証されます。

      このマップされたセグメントに関連付けられているファイル記述子がローカル・デバイスに存在しない場合は、そのような保証は行われません。

      このセグメントが読取り/書込みモードの(FileChannel.MapMode.READ_WRITE)でマップされていない場合、このメソッドを呼び出しても効果がない可能性があります。 特に、このメソッドは、読取り専用またはプライベート・マッピング・モードでマップされたセグメントには影響しません。 このメソッドは、実装固有のマッピング・モードに有効である場合も、そうでない場合もあります。

      例外:
      IllegalStateException - このセグメントに関連付けられたスコープがクローズされている場合、またはそのスコープを所有するスレッド以外のスレッドからアクセスが発生した場合。
      UnsupportedOperationException - このセグメントがマップされたメモリー・セグメントでない場合(例: isMapped() == false)。
      UncheckedIOException - このセグメントの内容を関連するストレージ・デバイスに書き込むI/Oエラーがある場合
    • asByteBuffer

      ByteBuffer asByteBuffer()
      ByteBufferでこのセグメントをラップします。 返されるバッファの一部のプロパティは、このセグメントのプロパティにリンクされます。 たとえば、このセグメントが「不変」 (たとえば、セグメントは読取り専用セグメントです。isReadOnly()を参照してください)の場合、生成されるバッファはread-only (Buffer.isReadOnly()を参照してください)です。 また、これがネイティブ・メモリー・セグメントの場合は、結果のバッファはdirect (ByteBuffer.isDirect()を参照してください)になります。

      戻されるバッファ位置(Buffer.position()を参照してください)は最初はゼロに設定されますが、戻されるバッファ容量および制限(Buffer.capacity()およびBuffer.limit()をそれぞれ参照)はこのセグメントのサイズ(byteSize()を参照してください)に設定されます。 このため、このセグメントのサイズがInteger.MAX_VALUEより大きい場合、byteバッファは返されません。

      返されるバッファのライフサイクルは、このセグメントのライフサイクルと関連します。 つまり、このセグメントに関連付けられたスコープが閉じられた後で戻されたバッファにアクセスすると、IllegalStateExceptionがスローされます (ResourceScope.close()を参照してください)。

      このセグメントが限定されたスコープに関連付けられている場合、結果のバッファに対する読取り/書込みI/O操作を呼び出すと、未指定の例外がスローされることがあります。 このような問題のある操作の例としては、AsynchronousSocketChannel.read(ByteBuffer)およびAsynchronousSocketChannel.write(ByteBuffer)があります。

      最後に、結果のバッファ・バイト順序はByteOrder.BIG_ENDIANです。これは、ByteBuffer.order(java.nio.ByteOrder)を使用して変更できます。

      戻り値:
      このメモリー・セグメントのByteBufferビュー。
      例外:
      UnsupportedOperationException - このセグメントをByteBufferインスタンスにマップできない場合(例: byte[]に基づいていないヒープ・ベースのセグメントをモデル化するため)、またはサイズがInteger.MAX_VALUEより大きい場合。
    • toArray

      byte[] toArray(ValueLayout.OfByte elementLayout)
      このメモリー・セグメントの内容を新しいバイト配列にコピーします。
      パラメータ:
      elementLayout - ソース要素のレイアウト。 レイアウトに関連付けられたバイト順序がネイティブ順序と異なる場合、各配列要素に対してバイト・スワップ操作が実行されます。
      戻り値:
      このメモリー・セグメントの新しいバイト配列のコピー。
      例外:
      IllegalStateException - このセグメントに関連付けられているスコープがクローズされている場合、またはそのスコープを所有するスレッド以外のスレッドからアクセスが発生する場合、またはこのセグメントの内容をbyteインスタンスにコピーできない場合(たとえば、そのサイズはInteger.MAX_VALUEより大きい場合)。
    • toArray

      short[] toArray(ValueLayout.OfShort elementLayout)
      このメモリー・セグメントの内容を新しいshort配列にコピーします。
      パラメータ:
      elementLayout - ソース要素のレイアウト。 レイアウトに関連付けられたバイト順序がネイティブ順序と異なる場合、各配列要素に対してバイト・スワップ操作が実行されます。
      戻り値:
      このメモリー・セグメントの新しいshort配列コピー。
      例外:
      IllegalStateException - このセグメントに関連付けられているスコープがクローズされている場合、またはそのスコープを所有するスレッド以外のスレッドからアクセスが発生した場合、またはこのセグメントの内容をshortインスタンスにコピーできない場合(たとえば、byteSize() % 2 != 0byteSize() / 2 > Integer#MAX_VALUEなど)
    • toArray

      char[] toArray(ValueLayout.OfChar elementLayout)
      このメモリー・セグメントの内容を新しいchar配列にコピーします。
      パラメータ:
      elementLayout - ソース要素のレイアウト。 レイアウトに関連付けられたバイト順序がネイティブ順序と異なる場合、各配列要素に対してバイト・スワップ操作が実行されます。
      戻り値:
      このメモリー・セグメントの新しいchar配列コピー。
      例外:
      IllegalStateException - このセグメントに関連付けられたスコープがクローズされている場合、またはそのスコープを所有するスレッド以外のスレッドからアクセスが発生する場合、またはこのセグメントの内容をcharインスタンスにコピーできない場合(byteSize() % 2 != 0byteSize() / 2 > Integer#MAX_VALUEなど)、。
    • toArray

      int[] toArray(ValueLayout.OfInt elementLayout)
      このメモリー・セグメントの内容を新しいint配列にコピーします。
      パラメータ:
      elementLayout - ソース要素のレイアウト。 レイアウトに関連付けられたバイト順序がネイティブ順序と異なる場合、各配列要素に対してバイト・スワップ操作が実行されます。
      戻り値:
      このメモリー・セグメントの新しいint配列コピー。
      例外:
      IllegalStateException - このセグメントに関連付けられたスコープがクローズされている場合、またはそのスコープを所有するスレッド以外のスレッドからアクセスが発生する場合、またはこのセグメントの内容をintインスタンスにコピーできない場合(byteSize() % 4 != 0byteSize() / 4 > Integer#MAX_VALUEなど)、。
    • toArray

      float[] toArray(ValueLayout.OfFloat elementLayout)
      このメモリー・セグメントの内容を新しいfloat配列にコピーします。
      パラメータ:
      elementLayout - ソース要素のレイアウト。 レイアウトに関連付けられたバイト順序がネイティブ順序と異なる場合、各配列要素に対してバイト・スワップ操作が実行されます。
      戻り値:
      このメモリー・セグメントの新しいfloat配列コピー。
      例外:
      IllegalStateException - このセグメントに関連付けられたスコープがクローズされている場合、またはそのスコープを所有するスレッド以外のスレッドからアクセスが発生する場合、またはこのセグメントの内容をfloatインスタンスにコピーできない場合(byteSize() % 4 != 0byteSize() / 4 > Integer#MAX_VALUEなど)、。
    • toArray

      long[] toArray(ValueLayout.OfLong elementLayout)
      このメモリー・セグメントの内容を新しいlong配列にコピーします。
      パラメータ:
      elementLayout - ソース要素のレイアウト。 レイアウトに関連付けられたバイト順序がネイティブ順序と異なる場合、各配列要素に対してバイト・スワップ操作が実行されます。
      戻り値:
      このメモリー・セグメントの新しいlong配列コピー。
      例外:
      IllegalStateException - このセグメントに関連付けられたスコープがクローズされている場合、またはそのスコープを所有するスレッド以外のスレッドからアクセスが発生する場合、またはこのセグメントの内容をlongインスタンスにコピーできない場合(byteSize() % 8 != 0byteSize() / 8 > Integer#MAX_VALUEなど)、。
    • toArray

      double[] toArray(ValueLayout.OfDouble elementLayout)
      このメモリー・セグメントの内容を新しいdouble配列にコピーします。
      パラメータ:
      elementLayout - ソース要素のレイアウト。 レイアウトに関連付けられたバイト順序がネイティブ順序と異なる場合、各配列要素に対してバイト・スワップ操作が実行されます。
      戻り値:
      このメモリー・セグメントの新しいdouble配列コピー。
      例外:
      IllegalStateException - このセグメントに関連付けられたスコープがクローズされている場合、またはそのスコープを所有するスレッド以外のスレッドからアクセスが発生する場合、またはこのセグメントの内容をdoubleインスタンスにコピーできない場合(byteSize() % 8 != 0byteSize() / 8 > Integer#MAX_VALUEなど)、。
    • getUtf8String

      default String getUtf8String(long offset)
      指定されたオフセットで、このセグメントからUTF-8でエンコードされたNULL終了文字列を読み取ります。

      このメソッドは、不正入力シーケンスやマップ不可文字シーケンスを、この文字セットのデフォルトの置換文字列で置き換えます。 デコード処理をより強力に制御する必要がある場合、CharsetDecoderクラスを使用する必要があります。

      パラメータ:
      offset - オフセット(バイト): (このセグメントに対する相対値)。 たとえば、このセグメントが「ネイティブ」セグメントの場合、この読取り操作の最終アドレスをaddress().toRowLongValue() + offsetとして表すことができます。
      戻り値:
      指定された開始アドレスから読み取られたバイト数から、最初の'\0'終了文字(見つかったもの) (含まない)までのJava文字列。
      例外:
      IllegalArgumentException - ネイティブ文字列のサイズがプラットフォームでサポートされている最大文字列より大きい場合。
      IllegalStateException - ネイティブ文字列のサイズがこのセグメントのサイズより大きい場合、またはこのセグメントに関連付けられたスコープが閉じられている場合、またはそのスコープを所有するスレッド以外のスレッドからアクセスが発生した場合。
    • setUtf8String

      default void setUtf8String(long offset, String str)
      指定された文字列を指定されたオフセット時にこのセグメントに書き込み、UTF-8エンコーディングを使用してNULLで終了したバイト・シーケンスに変換します。

      このメソッドは、不正入力シーケンスやマップ不可文字シーケンスを、この文字セットのデフォルトの置換文字列で置き換えます。 デコード処理をより強力に制御する必要がある場合、CharsetDecoderクラスを使用する必要があります。

      パラメータ:
      offset - オフセット(バイト): (このセグメントに対する相対値)。 たとえば、このセグメントが「ネイティブ」セグメントの場合、この書込み操作の最終アドレスをaddress().toRowLongValue() + offsetとして表すことができます。
      str - このセグメントに書き込まれるJava文字列。
      例外:
      IllegalArgumentException - ネイティブ文字列のサイズがプラットフォームでサポートされている最大文字列より大きい場合。
      IllegalStateException - ネイティブ文字列のサイズがこのセグメントのサイズより大きい場合、またはこのセグメントに関連付けられたスコープが閉じられている場合、またはそのスコープを所有するスレッド以外のスレッドからアクセスが発生した場合。
      UnsupportedOperationException - このセグメントがread-onlyの場合。
    • ofByteBuffer

      static MemorySegment ofByteBuffer(ByteBuffer bb)
      指定されたバイト・バッファに関連付けられたメモリーをモデル化する新しいバッファ・メモリー・セグメントを作成します。 セグメントはバッファ位置(inclusive)から相対的に始まり、バッファ制限(exclusive)に対して相対的に終わります。

      バッファがread-onlyの場合、結果のセグメントもread-onlyになります。 このセグメントに関連付けられたスコープは、「グローバル」リソース・スコープ、バッファが独立して作成された場合、またはその他のリソース・スコープのいずれかになります(asByteBuffer()を使用してバッファが取得された場合)。

      作成されたメモリー・セグメントは、バッキング・バッファへの参照を維持し、「到達可能」のままにします。

      パラメータ:
      bb - バッファ・メモリー・セグメントをバッキングするバイト・バッファ。
      戻り値:
      新しいバッファ・メモリー・セグメント。
    • ofArray

      static MemorySegment ofArray(byte[] arr)
      指定のヒープ割当てバイト配列に関連付けられたメモリーをモデル化する新しい配列メモリー・セグメントを作成します。 返されるセグメントは、「グローバル」リソース・スコープに関連付けられます。
      パラメータ:
      arr - 配列メモリー・セグメントにバックアップするプリミティブ配列。
      戻り値:
      新しい配列メモリー・セグメント。
    • ofArray

      static MemorySegment ofArray(char[] arr)
      指定のヒープ割当て文字配列に関連付けられたメモリーをモデル化する新しい配列メモリー・セグメントを作成します。 返されるセグメントは、「グローバル」リソース・スコープに関連付けられます。
      パラメータ:
      arr - 配列メモリー・セグメントにバックアップするプリミティブ配列。
      戻り値:
      新しい配列メモリー・セグメント。
    • ofArray

      static MemorySegment ofArray(short[] arr)
      指定のヒープ割当て済短い配列に関連付けられたメモリーをモデル化する新しい配列メモリー・セグメントを作成します。 返されるセグメントは、「グローバル」リソース・スコープに関連付けられます。
      パラメータ:
      arr - 配列メモリー・セグメントにバックアップするプリミティブ配列。
      戻り値:
      新しい配列メモリー・セグメント。
    • ofArray

      static MemorySegment ofArray(int[] arr)
      指定のヒープ割当て済int配列に関連付けられているメモリーをモデル化する新しい配列メモリー・セグメントを作成します。 返されるセグメントは、「グローバル」リソース・スコープに関連付けられます。
      パラメータ:
      arr - 配列メモリー・セグメントにバックアップするプリミティブ配列。
      戻り値:
      新しい配列メモリー・セグメント。
    • ofArray

      static MemorySegment ofArray(float[] arr)
      指定のヒープ割当て浮動小数配列に関連付けられたメモリーをモデル化する新しい配列メモリー・セグメントを作成します。 返されるセグメントは、「グローバル」リソース・スコープに関連付けられます。
      パラメータ:
      arr - 配列メモリー・セグメントにバックアップするプリミティブ配列。
      戻り値:
      新しい配列メモリー・セグメント。
    • ofArray

      static MemorySegment ofArray(long[] arr)
      指定のヒープ割当て済ロング配列に関連付けられているメモリーをモデル化する新しい配列メモリー・セグメントを作成します。 返されるセグメントは、「グローバル」リソース・スコープに関連付けられます。
      パラメータ:
      arr - 配列メモリー・セグメントにバックアップするプリミティブ配列。
      戻り値:
      新しい配列メモリー・セグメント。
    • ofArray

      static MemorySegment ofArray(double[] arr)
      指定のヒープ割当て済二重配列に関連付けられたメモリーをモデル化する新しい配列メモリー・セグメントを作成します。 返されるセグメントは、「グローバル」リソース・スコープに関連付けられます。
      パラメータ:
      arr - 配列メモリー・セグメントにバックアップするプリミティブ配列。
      戻り値:
      新しい配列メモリー・セグメント。
    • ofAddress

      static MemorySegment ofAddress(MemoryAddress address, long bytesSize, ResourceScope scope)
      指定されたサイズとリソース・スコープで、ベース・アドレスが指定されたアドレスを持つ新しいネイティブ・メモリー・セグメントを作成します。 このメソッドは、カスタム・ネイティブ・メモリー・ソース(例:カスタム・ロケータ)と対話する場合に便利です。この場合、基礎となるメモリー・リージョンのアドレスは通常、ネイティブ・コード(プレーンlong値として使用されることが多い)から取得されます。 返されるセグメントは読取り専用(isReadOnly()を参照してください)ではなく、指定されたリソース・スコープに関連付けられます。

      クライアントは、アドレスと境界が、読み取りおよび適切な場合は書き込みのためにアクセス可能な有効なメモリー・リージョンを参照していることを確認する必要があります。Javaコードから無効なメモリーのロケーションにアクセスしようとすると、任意の値が返されるか、可視効果がないか、または指定されていない例外がスローされます。

      このメソッドは制限付きです。 制限されたメソッドは安全ではなく、誤って使用するとJVMがクラッシュしたり、悪化したりするとメモリーが破損する可能性があります。 したがって、クライアントは制限付きメソッドに応じて屈折し、可能な場合は安全でサポートされている機能を使用する必要があります。

      パラメータ:
      address - 返されるセグメントのベース・アドレス。
      bytesSize - 目的のサイズ。
      scope - ネイティブ・セグメント・スコープ。
      戻り値:
      指定されたベース・アドレス、サイズ、およびスコープを持つ新しいネイティブ・メモリー・セグメント。
      例外:
      IllegalArgumentException - bytesSize <= 0の場合。
      IllegalStateException - 指定されたスコープがすでに閉じられている場合、またはスコープを所有するスレッド以外のスレッドからアクセスが発生した場合。
      IllegalCallerException - このメソッドへのアクセスがモジュールMから発生し、コマンドライン・オプション--enable-native-accessがない場合、またはモジュール名Mが名前なしモジュールの場合はALL-UNNAMEDは説明しません。
    • allocateNative

      static MemorySegment allocateNative(MemoryLayout layout, ResourceScope scope)
      指定されたレイアウトおよびリソース・スコープで、新しく割り当てられたオフ・ヒープ・メモリーのブロックをモデル化する新しいネイティブ・メモリー・セグメントを作成します。 クライアントは、セグメントが使用されなくなったときに、返されたセグメントに関連付けられたリソース・スコープがクローズされていることを確認します。 これを行わなかった場合、ヒープ外のメモリー・リークが発生します。

      これは次のコードと等価です。

      allocateNative(layout.bytesSize(), layout.bytesAlignment(), scope);
      

      返されたネイティブ・メモリー・セグメントに関連するoff-heapメモリーのブロックは、ゼロに初期化されます。

      パラメータ:
      layout - ネイティブ・メモリー・セグメントのバッキングの非ヒープ・メモリー・ブロックのレイアウト。
      scope - ▲セグメント範囲を指定します。
      戻り値:
      新しいネイティブ・メモリー・セグメント。
      例外:
      IllegalArgumentException - 指定されたレイアウトに不正なサイズ制約または位置合せ制約がある場合。
      IllegalStateException - scopeがすでにクローズされている場合、またはscopeを所有するスレッド以外のスレッドからアクセスが発生した場合。
    • allocateNative

      static MemorySegment allocateNative(long bytesSize, ResourceScope scope)
      指定されたサイズ(バイト単位)およびリソース・スコープのオフ・ヒープ・メモリーの新しい割当て済ブロックをモデル化する新しいネイティブ・メモリー・セグメントを作成します。 クライアントは、セグメントが使用されなくなったときに、返されたセグメントに関連付けられたリソース・スコープがクローズされていることを確認します。 これを行わなかった場合、ヒープ外のメモリー・リークが発生します。

      これは次のコードと等価です。

      allocateNative(bytesSize, 1, scope);
      

      返されたネイティブ・メモリー・セグメントに関連するoff-heapメモリーのブロックは、ゼロに初期化されます。

      パラメータ:
      bytesSize - ネイティブ・メモリー・セグメントのバッキングのヒープ外メモリー・ブロックのサイズ(バイト単位)。
      scope - ▲セグメント範囲を指定します。
      戻り値:
      新しいネイティブ・メモリー・セグメント。
      例外:
      IllegalArgumentException - bytesSize <= 0の場合。
      IllegalStateException - scopeがすでにクローズされている場合、またはscopeを所有するスレッド以外のスレッドからアクセスが発生した場合。
    • allocateNative

      static MemorySegment allocateNative(long bytesSize, long alignmentBytes, ResourceScope scope)
      指定されたサイズ(バイト単位)、整列制約(バイト単位)およびリソース・スコープのオフ・ヒープ・メモリーの新しい割当て済ブロックをモデル化する新しいネイティブ・メモリー・セグメントを作成します。 クライアントは、セグメントが使用されなくなったときに、返されたセグメントに関連付けられたリソース・スコープがクローズされていることを確認します。 これを行わなかった場合、ヒープ外のメモリー・リークが発生します。

      返されたネイティブ・メモリー・セグメントに関連するoff-heapメモリーのブロックは、ゼロに初期化されます。

      パラメータ:
      bytesSize - ネイティブ・メモリー・セグメントのバッキングのヒープ外メモリー・ブロックのサイズ(バイト単位)。
      alignmentBytes - ネイティブ・メモリー・セグメントのバッキングのヒープ外メモリー・ブロックの位置合せ制約(バイト単位)。
      scope - ▲セグメント範囲を指定します。
      戻り値:
      新しいネイティブ・メモリー・セグメント。
      例外:
      IllegalArgumentException - bytesSize <= 0alignmentBytes <= 0またはalignmentBytesが2の累乗でない場合。
      IllegalStateException - scopeがすでにクローズされている場合、またはscopeを所有するスレッド以外のスレッドからアクセスが発生した場合。
    • mapFile

      static MemorySegment mapFile(Path path, long bytesOffset, long bytesSize, FileChannel.MapMode mapMode, ResourceScope scope) throws IOException
      指定されたパスからファイルのメモリー・マップのリージョンをモデル化する、新しいマップ済メモリー・セグメントを作成します。

      指定されたマッピング・モードがREAD_ONLYの場合、結果のセグメントは読取り専用(isReadOnly()を参照してください)になります。

      マップされたメモリー・セグメントの内容は、マップされたファイルの対応するリージョンの内容がこの(または別の)プログラムによって変更される場合など、いつでも変更できます。 このような変更が発生したかどうか、および発生した場合、オペレーティング・システムに依存するため未指定です。

      マップされたメモリー・セグメントのすべてまたは一部は、バッキング・マップ・ファイルが切り捨てられた場合など、いつでもアクセスできなくなる可能性があります。 マップされたメモリー・セグメントのアクセス不可能なリージョンにアクセスしようとしても、セグメントの内容は変更されず、アクセス時または後で未指定の例外がスローされます。 したがって、ファイルの内容の読取りまたは書込みを除き、この(または別の)プログラムによるマップ済ファイルの操作を回避するために、適切な注意を払うことを強くお薦めします。

      実装上のノート:
      新たに作成されたファイルからマップされたセグメントを取得する場合、返されたマップ済メモリー・セグメントに関連付けられているマップ済メモリー・ブロックのコンテンツの初期化状態は未指定であり、判断すべきではありません。
      パラメータ:
      path - メモリー・マップへのファイルのパス。
      bytesOffset - マップされたセグメントを開始するファイル内のオフセット(バイトで表されます。)。
      bytesSize - メモリー・セグメントをバッキングするマップ済メモリーのサイズ(バイト単位)。
      mapMode - ファイル・マッピング・モード。FileChannel.map(FileChannel.MapMode, long, long)を参照してください。マッピング・モードは、返されるメモリー・マップ・セグメント(force()を参照してください)の動作に影響する可能性があります。
      scope - ▲セグメント範囲を指定します。
      戻り値:
      新しいマッピング済メモリー・セグメント。
      例外:
      IllegalArgumentException - bytesOffset < 0bytesSize < 0またはpathがデフォルトのファイル・システムに関連付けられていない場合。
      IllegalStateException - scopeがすでにクローズされている場合、またはscopeを所有するスレッド以外のスレッドからアクセスが発生した場合。
      UnsupportedOperationException - サポートされていないマップ・モードが指定された場合。
      IOException - 指定したパスが既存のファイルを指し示していないか、他のI/Oエラーが発生した場合。
      SecurityException - セキュリティ・マネージャがインストールされており、実装に必要な権限が指定されていない場合。 デフォルト・プロバイダで、ファイルが読取り用に開かれた場合は、SecurityManager.checkRead(String)メソッドが呼び出されてファイルへの読取りアクセスがチェックされます。 ファイルが書込み用に開かれた場合は、SecurityManager.checkWrite(String)メソッドが呼び出されて書込みアクセスがチェックされます。
    • copy

      static void copy(MemorySegment srcSegment, long srcOffset, MemorySegment dstSegment, long dstOffset, long bytes)
      ソース・セグメントから宛先セグメントへの一括コピーを実行します。 特に、ソース・セグメントのオフセットsrcOffsetからsrcOffset + bytes - 1のバイトは、オフセットdstOffsetからdstOffset + bytes - 1の宛先セグメントにコピーされます。

      ソース・セグメントがこのセグメントと重複する場合、コピーは、ソース・セグメントのオフセットsrcOffsetからsrcOffset + bytes - 1のバイトが最初にサイズbytesの一時セグメントにコピーされたかのように実行され、一時セグメントの内容はオフセットdstOffsetからdstOffset + bytes - 1で宛先セグメントにコピーされました。

      一括コピーの結果は、通常の場合、ソース・セグメントと宛先セグメントが重複せず、異なるアドレスを使用して同じバッキング・ストレージの重複するリージョンを参照する場合に指定されません。 たとえば、同じファイルが複数のセグメントに対して「マップ済」である場合に発生することがあります。

      このメソッドの呼出しは、次のコードと同じです:

      MemorySegment.copy(srcSegment, ValueLayout.JAVA_BYTE, srcOffset, dstSegment, ValueLayout.JAVA_BYTE, dstOffset, bytes);
      

      パラメータ:
      srcSegment - ソース・セグメント。
      srcOffset - ソース・セグメントの開始オフセット(バイト単位)。
      dstSegment - 宛先セグメント。
      dstOffset - 宛先セグメントの開始オフセット(バイト単位)。
      bytes - コピーされるバイト数。
      例外:
      IllegalStateException - ソース・セグメントに関連付けられたスコープまたは宛先セグメントに関連付けられたスコープがすでにクローズされている場合、またはいずれかのスコープを所有するスレッド以外のスレッドからアクセスが発生した場合。
      IndexOutOfBoundsException - srcOffset + bytes > srcSegment.byteSize()またはdstOffset + bytes > dstSegment.byteSize()の場合、またはsrcOffsetdstOffsetまたはbytesのいずれかが< 0の場合。
      UnsupportedOperationException - 宛先セグメントが読取り専用(isReadOnly()を参照してください)の場合。
    • copy

      static void copy(MemorySegment srcSegment, ValueLayout srcElementLayout, long srcOffset, MemorySegment dstSegment, ValueLayout dstElementLayout, long dstOffset, long elementCount)
      ソース・セグメントから宛先セグメントへの一括コピーを実行します。 特に、Sが要素レイアウトのバイト・サイズである場合、ソース・セグメントのオフセットsrcOffsetからsrcOffset + (elementCount * S) - 1のバイトは、オフセットdstOffsetからdstOffset + (elementCount * S) - 1の宛先セグメントにコピーされます。

      コピーはエレメント・ワイズ方式で行われます: ソース・セグメントのバイトは、レイアウトがsrcElementLayoutである要素のシーケンスとして解釈されますが、宛先セグメントのバイトは、レイアウトがdstElementLayoutである要素のシーケンスとして解釈されます。 どちらの要素レイアウトも、同じサイズSである必要があります。 2つの要素レイアウトのバイト順序が異なる場合、コピーする各要素に対応するバイトは、コピー操作中にそれに応じてスワップされます。

      ソース・セグメントがこのセグメントと重複する場合、コピーは、ソース・セグメントのオフセットsrcOffsetからsrcOffset + (elementCount * S) - 1のバイトが最初にサイズbytesの一時セグメントにコピーされたかのように実行され、一時セグメントの内容はオフセットdstOffsetからdstOffset + (elementCount * S) - 1で宛先セグメントにコピーされました。

      一括コピーの結果は、通常の場合、ソース・セグメントと宛先セグメントが重複せず、異なるアドレスを使用して同じバッキング・ストレージの重複するリージョンを参照する場合に指定されません。 たとえば、同じファイルが複数のセグメントに対して「マップ済」である場合に発生することがあります。

      パラメータ:
      srcSegment - ソース・セグメント。
      srcElementLayout - ソース・セグメントに関連付けられたエレメント・レイアウト。
      srcOffset - ソース・セグメントの開始オフセット(バイト単位)。
      dstSegment - 宛先セグメント。
      dstElementLayout - 宛先セグメントに関連付けられた要素レイアウト。
      dstOffset - 宛先セグメントの開始オフセット(バイト単位)。
      elementCount - コピーする要素の数。
      例外:
      IllegalArgumentException - 要素レイアウトのサイズが異なる場合、ソース(resp.宛先)要素レイアウトのソース(resp.宛先)セグメント/オフセットが「線形拘束と互換性がありません」の場合、またはソース(resp.宛先)要素のレイアウトの配置がサイズより大きい場合。
      IllegalStateException - ソース・セグメントに関連付けられたスコープまたは宛先セグメントに関連付けられたスコープがすでにクローズされている場合、またはいずれかのスコープを所有するスレッド以外のスレッドからアクセスが発生した場合。
      IndexOutOfBoundsException - srcOffset + (elementCount * S) > srcSegment.byteSize()の場合、またはdstOffset + (elementCount * S) > dstSegment.byteSize()の場合(Sは要素レイアウトのバイト・サイズ、またはsrcOffsetdstOffsetまたはelementCountのいずれかが< 0の場合)。
      UnsupportedOperationException - 宛先セグメントが読取り専用(isReadOnly()を参照してください)の場合。
    • get

      default byte get(ValueLayout.OfByte layout, long offset)
      このセグメントからバイトを読み取り、指定されたレイアウトでオフセットします。
      パラメータ:
      layout - 読み取るメモリー・リージョンのレイアウト。
      offset - オフセット(バイト): (このセグメントに対する相対値)。 たとえば、このセグメントが「ネイティブ」セグメントの場合、この読取り操作の最終アドレスをaddress().toRowLongValue() + offsetとして表すことができます。
      戻り値:
      このアドレスから読み取られたバイト値。
      例外:
      IllegalStateException - このセグメントに関連付けられたスコープがクローズされている場合、またはそのスコープを所有するスレッド以外のスレッドからアクセスが発生した場合。
      IllegalArgumentException - 指定されたレイアウトで間接参照操作が「線形拘束と互換性がありません」の場合。
      IndexOutOfBoundsException - 間接参照操作がメモリー・セグメントの「空間境界」の外側にある場合。
    • set

      default void set(ValueLayout.OfByte layout, long offset, byte value)
      このセグメントにバイトを書き込み、指定されたレイアウトでオフセットします。
      パラメータ:
      layout - 書き込まれるメモリー・リージョンのレイアウト。
      offset - オフセット(バイト): (このセグメントに対する相対値)。 たとえば、このセグメントが「ネイティブ」セグメントの場合、この書込み操作の最終アドレスをaddress().toRowLongValue() + offsetとして表すことができます。
      value - 書き込まれるbyte値。
      例外:
      IllegalStateException - このセグメントに関連付けられたスコープがクローズされている場合、またはそのスコープを所有するスレッド以外のスレッドからアクセスが発生した場合。
      IllegalArgumentException - 指定されたレイアウトで間接参照操作が「線形拘束と互換性がありません」の場合。
      IndexOutOfBoundsException - 間接参照操作がメモリー・セグメントの「空間境界」の外側にある場合。
      UnsupportedOperationException - このセグメントがread-onlyの場合。
    • get

      default boolean get(ValueLayout.OfBoolean layout, long offset)
      このセグメントからブール値を読み取り、特定のレイアウトでオフセットします。
      パラメータ:
      layout - 読み取るメモリー・リージョンのレイアウト。
      offset - オフセット(バイト): (このセグメントに対する相対値)。 たとえば、このセグメントが「ネイティブ」セグメントの場合、この読取り操作の最終アドレスをaddress().toRowLongValue() + offsetとして表すことができます。
      戻り値:
      このアドレスから読み取られるブール値。
      例外:
      IllegalStateException - このセグメントに関連付けられたスコープがクローズされている場合、またはそのスコープを所有するスレッド以外のスレッドからアクセスが発生した場合。
      IllegalArgumentException - 指定されたレイアウトで間接参照操作が「線形拘束と互換性がありません」の場合。
      IndexOutOfBoundsException - 間接参照操作がメモリー・セグメントの「空間境界」の外側にある場合。
    • set

      default void set(ValueLayout.OfBoolean layout, long offset, boolean value)
      このセグメントにブール値を書き込み、指定されたレイアウトでオフセットします。
      パラメータ:
      layout - 書き込まれるメモリー・リージョンのレイアウト。
      offset - オフセット(バイト): (このセグメントに対する相対値)。 たとえば、このセグメントが「ネイティブ」セグメントの場合、この書込み操作の最終アドレスをaddress().toRowLongValue() + offsetとして表すことができます。
      value - 書き込まれるブール値。
      例外:
      IllegalStateException - このセグメントに関連付けられたスコープがクローズされている場合、またはそのスコープを所有するスレッド以外のスレッドからアクセスが発生した場合。
      IllegalArgumentException - 指定されたレイアウトで間接参照操作が「線形拘束と互換性がありません」の場合。
      IndexOutOfBoundsException - 間接参照操作がメモリー・セグメントの「空間境界」の外側にある場合。
      UnsupportedOperationException - このセグメントがread-onlyの場合。
    • get

      default char get(ValueLayout.OfChar layout, long offset)
      このセグメントからcharを読み取り、指定されたレイアウトでオフセットします。
      パラメータ:
      layout - 読み取るメモリー・リージョンのレイアウト。
      offset - オフセット(バイト): (このセグメントに対する相対値)。 たとえば、このセグメントが「ネイティブ」セグメントの場合、この読取り操作の最終アドレスをaddress().toRowLongValue() + offsetとして表すことができます。
      戻り値:
      このアドレスから読み取られるchar値。
      例外:
      IllegalStateException - このセグメントに関連付けられたスコープがクローズされている場合、またはそのスコープを所有するスレッド以外のスレッドからアクセスが発生した場合。
      IllegalArgumentException - 指定されたレイアウトで間接参照操作が「線形拘束と互換性がありません」の場合。
      IndexOutOfBoundsException - 間接参照操作がメモリー・セグメントの「空間境界」の外側にある場合。
    • set

      default void set(ValueLayout.OfChar layout, long offset, char value)
      このセグメントにcharを書き込み、指定されたレイアウトでオフセットします。
      パラメータ:
      layout - 書き込まれるメモリー・リージョンのレイアウト。
      offset - オフセット(バイト): (このセグメントに対する相対値)。 たとえば、このセグメントが「ネイティブ」セグメントの場合、この書込み操作の最終アドレスをaddress().toRowLongValue() + offsetとして表すことができます。
      value - 書き込まれるchar値。
      例外:
      IllegalStateException - このセグメントに関連付けられたスコープがクローズされている場合、またはそのスコープを所有するスレッド以外のスレッドからアクセスが発生した場合。
      IllegalArgumentException - 指定されたレイアウトで間接参照操作が「線形拘束と互換性がありません」の場合。
      IndexOutOfBoundsException - 間接参照操作がメモリー・セグメントの「空間境界」の外側にある場合。
      UnsupportedOperationException - このセグメントがread-onlyの場合。
    • get

      default short get(ValueLayout.OfShort layout, long offset)
      このセグメントから短く、指定したレイアウトでオフセットを読み取ります。
      パラメータ:
      layout - 読み取るメモリー・リージョンのレイアウト。
      offset - オフセット(バイト): (このセグメントに対する相対値)。 たとえば、このセグメントが「ネイティブ」セグメントの場合、この読取り操作の最終アドレスをaddress().toRowLongValue() + offsetとして表すことができます。
      戻り値:
      このアドレスから読み取られる短い値。
      例外:
      IllegalStateException - このセグメントに関連付けられたスコープがクローズされている場合、またはそのスコープを所有するスレッド以外のスレッドからアクセスが発生した場合。
      IllegalArgumentException - 指定されたレイアウトで間接参照操作が「線形拘束と互換性がありません」の場合。
      IndexOutOfBoundsException - 間接参照操作がメモリー・セグメントの「空間境界」の外側にある場合。
    • set

      default void set(ValueLayout.OfShort layout, long offset, short value)
      このセグメントに短くなり、指定したレイアウトでオフセットが書き込まれます。
      パラメータ:
      layout - 書き込まれるメモリー・リージョンのレイアウト。
      offset - オフセット(バイト): (このセグメントに対する相対値)。 たとえば、このセグメントが「ネイティブ」セグメントの場合、この書込み操作の最終アドレスをaddress().toRowLongValue() + offsetとして表すことができます。
      value - 書き込まれるshort値。
      例外:
      IllegalStateException - このセグメントに関連付けられたスコープがクローズされている場合、またはそのスコープを所有するスレッド以外のスレッドからアクセスが発生した場合。
      IllegalArgumentException - 指定されたレイアウトで間接参照操作が「線形拘束と互換性がありません」の場合。
      IndexOutOfBoundsException - 間接参照操作がメモリー・セグメントの「空間境界」の外側にある場合。
      UnsupportedOperationException - このセグメントがread-onlyの場合。
    • get

      default int get(ValueLayout.OfInt layout, long offset)
      このセグメントからintを読み取り、特定のレイアウトでオフセットします。
      パラメータ:
      layout - 読み取るメモリー・リージョンのレイアウト。
      offset - オフセット(バイト): (このセグメントに対する相対値)。 たとえば、このセグメントが「ネイティブ」セグメントの場合、この読取り操作の最終アドレスをaddress().toRowLongValue() + offsetとして表すことができます。
      戻り値:
      このアドレスから読み取られるint値。
      例外:
      IllegalStateException - このセグメントに関連付けられたスコープがクローズされている場合、またはそのスコープを所有するスレッド以外のスレッドからアクセスが発生した場合。
      IllegalArgumentException - 指定されたレイアウトで間接参照操作が「線形拘束と互換性がありません」の場合。
      IndexOutOfBoundsException - 間接参照操作がメモリー・セグメントの「空間境界」の外側にある場合。
    • set

      default void set(ValueLayout.OfInt layout, long offset, int value)
      このセグメントにintを書き込み、指定されたレイアウトでオフセットします。
      パラメータ:
      layout - 書き込まれるメモリー・リージョンのレイアウト。
      offset - オフセット(バイト): (このセグメントに対する相対値)。 たとえば、このセグメントが「ネイティブ」セグメントの場合、この書込み操作の最終アドレスをaddress().toRowLongValue() + offsetとして表すことができます。
      value - 書き込まれるint値。
      例外:
      IllegalStateException - このセグメントに関連付けられたスコープがクローズされている場合、またはそのスコープを所有するスレッド以外のスレッドからアクセスが発生した場合。
      IllegalArgumentException - 指定されたレイアウトで間接参照操作が「線形拘束と互換性がありません」の場合。
      IndexOutOfBoundsException - 間接参照操作がメモリー・セグメントの「空間境界」の外側にある場合。
      UnsupportedOperationException - このセグメントがread-onlyの場合。
    • get

      default float get(ValueLayout.OfFloat layout, long offset)
      このセグメントから浮動小数点を読み取り、特定のレイアウトでオフセットします。
      パラメータ:
      layout - 読み取るメモリー・リージョンのレイアウト。
      offset - オフセット(バイト): (このセグメントに対する相対値)。 たとえば、このセグメントが「ネイティブ」セグメントの場合、この読取り操作の最終アドレスをaddress().toRowLongValue() + offsetとして表すことができます。
      戻り値:
      このアドレスから読み取られる浮動小数点値。
      例外:
      IllegalStateException - このセグメントに関連付けられたスコープがクローズされている場合、またはそのスコープを所有するスレッド以外のスレッドからアクセスが発生した場合。
      IllegalArgumentException - 指定されたレイアウトで間接参照操作が「線形拘束と互換性がありません」の場合。
      IndexOutOfBoundsException - 間接参照操作がメモリー・セグメントの「空間境界」の外側にある場合。
    • set

      default void set(ValueLayout.OfFloat layout, long offset, float value)
      このセグメントに浮動小数点を書き込み、指定されたレイアウトでオフセットします。
      パラメータ:
      layout - 書き込まれるメモリー・リージョンのレイアウト。
      offset - オフセット(バイト): (このセグメントに対する相対値)。 たとえば、このセグメントが「ネイティブ」セグメントの場合、この書込み操作の最終アドレスをaddress().toRowLongValue() + offsetとして表すことができます。
      value - 書き込まれるfloat値。
      例外:
      IllegalStateException - このセグメントに関連付けられたスコープがクローズされている場合、またはそのスコープを所有するスレッド以外のスレッドからアクセスが発生した場合。
      IllegalArgumentException - 指定されたレイアウトで間接参照操作が「線形拘束と互換性がありません」の場合。
      IndexOutOfBoundsException - 間接参照操作がメモリー・セグメントの「空間境界」の外側にある場合。
      UnsupportedOperationException - このセグメントがread-onlyの場合。
    • get

      default long get(ValueLayout.OfLong layout, long offset)
      このセグメントから長時間、および指定されたレイアウトでオフセットを読み取ります。
      パラメータ:
      layout - 読み取るメモリー・リージョンのレイアウト。
      offset - オフセット(バイト): (このセグメントに対する相対値)。 たとえば、このセグメントが「ネイティブ」セグメントの場合、この読取り操作の最終アドレスをaddress().toRowLongValue() + offsetとして表すことができます。
      戻り値:
      このアドレスから読み取られる長い値。
      例外:
      IllegalStateException - このセグメントに関連付けられたスコープがクローズされている場合、またはそのスコープを所有するスレッド以外のスレッドからアクセスが発生した場合。
      IllegalArgumentException - 指定されたレイアウトで間接参照操作が「線形拘束と互換性がありません」の場合。
      IndexOutOfBoundsException - 間接参照操作がメモリー・セグメントの「空間境界」の外側にある場合。
    • set

      default void set(ValueLayout.OfLong layout, long offset, long value)
      このセグメントに長い時間を書き込み、指定されたレイアウトでオフセットします。
      パラメータ:
      layout - 書き込まれるメモリー・リージョンのレイアウト。
      offset - オフセット(バイト): (このセグメントに対する相対値)。 たとえば、このセグメントが「ネイティブ」セグメントの場合、この書込み操作の最終アドレスをaddress().toRowLongValue() + offsetとして表すことができます。
      value - 書き込まれるlong値。
      例外:
      IllegalStateException - このセグメントに関連付けられたスコープがクローズされている場合、またはそのスコープを所有するスレッド以外のスレッドからアクセスが発生した場合。
      IllegalArgumentException - 指定されたレイアウトで間接参照操作が「線形拘束と互換性がありません」の場合。
      IndexOutOfBoundsException - 間接参照操作がメモリー・セグメントの「空間境界」の外側にある場合。
      UnsupportedOperationException - このセグメントがread-onlyの場合。
    • get

      default double get(ValueLayout.OfDouble layout, long offset)
      このセグメントから倍精度浮動小数点数を読み取り、特定のレイアウトでオフセットします。
      パラメータ:
      layout - 読み取るメモリー・リージョンのレイアウト。
      offset - オフセット(バイト): (このセグメントに対する相対値)。 たとえば、このセグメントが「ネイティブ」セグメントの場合、この読取り操作の最終アドレスをaddress().toRowLongValue() + offsetとして表すことができます。
      戻り値:
      このアドレスから読み取られる二重値。
      例外:
      IllegalStateException - このセグメントに関連付けられたスコープがクローズされている場合、またはそのスコープを所有するスレッド以外のスレッドからアクセスが発生した場合。
      IllegalArgumentException - 指定されたレイアウトで間接参照操作が「線形拘束と互換性がありません」の場合。
      IndexOutOfBoundsException - 間接参照操作がメモリー・セグメントの「空間境界」の外側にある場合。
    • set

      default void set(ValueLayout.OfDouble layout, long offset, double value)
      このセグメントに倍精度で書き込み、指定されたレイアウトでオフセットします。
      パラメータ:
      layout - 書き込まれるメモリー・リージョンのレイアウト。
      offset - オフセット(バイト): (このセグメントに対する相対値)。 たとえば、このセグメントが「ネイティブ」セグメントの場合、この書込み操作の最終アドレスをaddress().toRowLongValue() + offsetとして表すことができます。
      value - 書き込まれるdouble値。
      例外:
      IllegalStateException - このセグメントに関連付けられたスコープがクローズされている場合、またはそのスコープを所有するスレッド以外のスレッドからアクセスが発生した場合。
      IllegalArgumentException - 指定されたレイアウトで間接参照操作が「線形拘束と互換性がありません」の場合。
      IndexOutOfBoundsException - 間接参照操作がメモリー・セグメントの「空間境界」の外側にある場合。
      UnsupportedOperationException - このセグメントがread-onlyの場合。
    • get

      default MemoryAddress get(ValueLayout.OfAddress layout, long offset)
      このセグメントから住所を読み取り、指定されたレイアウトでオフセットします。
      パラメータ:
      layout - 読み取るメモリー・リージョンのレイアウト。
      offset - オフセット(バイト): (このセグメントに対する相対値)。 たとえば、このセグメントが「ネイティブ」セグメントの場合、この読取り操作の最終アドレスをaddress().toRowLongValue() + offsetとして表すことができます。
      戻り値:
      このアドレスから読み取られたアドレス値。
      例外:
      IllegalStateException - このセグメントに関連付けられたスコープがクローズされている場合、またはそのスコープを所有するスレッド以外のスレッドからアクセスが発生した場合。
      IllegalArgumentException - 指定されたレイアウトで間接参照操作が「線形拘束と互換性がありません」の場合。
      IndexOutOfBoundsException - 間接参照操作がメモリー・セグメントの「空間境界」の外側にある場合。
    • set

      default void set(ValueLayout.OfAddress layout, long offset, Addressable value)
      アドレスをこのセグメントに書き込み、指定されたレイアウトでオフセットします。
      パラメータ:
      layout - 書き込まれるメモリー・リージョンのレイアウト。
      offset - オフセット(バイト): (このセグメントに対する相対値)。 たとえば、このセグメントが「ネイティブ」セグメントの場合、この書込み操作の最終アドレスをaddress().toRowLongValue() + offsetとして表すことができます。
      value - 書き込まれるアドレス値。
      例外:
      IllegalStateException - このセグメントに関連付けられたスコープがクローズされている場合、またはそのスコープを所有するスレッド以外のスレッドからアクセスが発生した場合。
      IllegalArgumentException - 指定されたレイアウトで間接参照操作が「線形拘束と互換性がありません」の場合。
      IndexOutOfBoundsException - 間接参照操作がメモリー・セグメントの「空間境界」の外側にある場合。
      UnsupportedOperationException - このセグメントがread-onlyの場合。
    • getAtIndex

      default char getAtIndex(ValueLayout.OfChar layout, long index)
      指定されたレイアウト・サイズでスケーリングされた、このセグメントおよび索引からcharを読み取ります。
      パラメータ:
      layout - 読み取るメモリー・リージョンのレイアウト。
      index - 索引(このセグメントに対する相対値)。 たとえば、このセグメントが「ネイティブ」セグメントの場合、この読取り操作の最終アドレスをaddress().toRowLongValue() + (index * layout.byteSize())として表すことができます。
      戻り値:
      このアドレスから読み取られるchar値。
      例外:
      IllegalStateException - このセグメントに関連付けられたスコープがクローズされている場合、またはそのスコープを所有するスレッド以外のスレッドからアクセスが発生した場合。
      IllegalArgumentException - 指定されたレイアウトで間接参照操作が「線形拘束と互換性がありません」の場合、またはレイアウト配置がそのサイズより大きい場合。
      IndexOutOfBoundsException - 間接参照操作がメモリー・セグメントの「空間境界」の外側にある場合。
    • setAtIndex

      default void setAtIndex(ValueLayout.OfChar layout, long index, char value)
      このセグメントおよび索引にcharを書き込み、特定のレイアウト・サイズでスケーリングします。
      パラメータ:
      layout - 書き込まれるメモリー・リージョンのレイアウト。
      index - 索引(このセグメントに対する相対値)。 たとえば、このセグメントが「ネイティブ」セグメントの場合、この書込み操作の最終アドレスをaddress().toRowLongValue() + (index * layout.byteSize())として表すことができます。
      value - 書き込まれるchar値。
      例外:
      IllegalStateException - このセグメントに関連付けられたスコープがクローズされている場合、またはそのスコープを所有するスレッド以外のスレッドからアクセスが発生した場合。
      IllegalArgumentException - 指定されたレイアウトで間接参照操作が「線形拘束と互換性がありません」の場合、またはレイアウト配置がそのサイズより大きい場合。
      IndexOutOfBoundsException - 間接参照操作がメモリー・セグメントの「空間境界」の外側にある場合。
      UnsupportedOperationException - このセグメントがread-onlyの場合。
    • getAtIndex

      default short getAtIndex(ValueLayout.OfShort layout, long index)
      このセグメントおよび索引から、特定のレイアウト・サイズでスケーリングされた短い値を読み取ります。
      パラメータ:
      layout - 読み取るメモリー・リージョンのレイアウト。
      index - 索引(このセグメントに対する相対値)。 たとえば、このセグメントが「ネイティブ」セグメントの場合、この読取り操作の最終アドレスをaddress().toRowLongValue() + (index * layout.byteSize())として表すことができます。
      戻り値:
      このアドレスから読み取られる短い値。
      例外:
      IllegalStateException - このセグメントに関連付けられたスコープがクローズされている場合、またはそのスコープを所有するスレッド以外のスレッドからアクセスが発生した場合。
      IllegalArgumentException - 指定されたレイアウトで間接参照操作が「線形拘束と互換性がありません」の場合、またはレイアウト配置がそのサイズより大きい場合。
      IndexOutOfBoundsException - 間接参照操作がメモリー・セグメントの「空間境界」の外側にある場合。
    • setAtIndex

      default void setAtIndex(ValueLayout.OfShort layout, long index, short value)
      このセグメントおよび索引に短い値を書き込み、特定のレイアウト・サイズでスケーリングします。
      パラメータ:
      layout - 書き込まれるメモリー・リージョンのレイアウト。
      index - 索引(このセグメントに対する相対値)。 たとえば、このセグメントが「ネイティブ」セグメントの場合、この書込み操作の最終アドレスをaddress().toRowLongValue() + (index * layout.byteSize())として表すことができます。
      value - 書き込まれるshort値。
      例外:
      IllegalStateException - このセグメントに関連付けられたスコープがクローズされている場合、またはそのスコープを所有するスレッド以外のスレッドからアクセスが発生した場合。
      IllegalArgumentException - 指定されたレイアウトで間接参照操作が「線形拘束と互換性がありません」の場合、またはレイアウト配置がそのサイズより大きい場合。
      IndexOutOfBoundsException - 間接参照操作がメモリー・セグメントの「空間境界」の外側にある場合。
      UnsupportedOperationException - このセグメントがread-onlyの場合。
    • getAtIndex

      default int getAtIndex(ValueLayout.OfInt layout, long index)
      このセグメントおよび索引から、特定のレイアウト・サイズでスケーリングされたintを読み取ります。
      パラメータ:
      layout - 読み取るメモリー・リージョンのレイアウト。
      index - 索引(このセグメントに対する相対値)。 たとえば、このセグメントが「ネイティブ」セグメントの場合、この読取り操作の最終アドレスをaddress().toRowLongValue() + (index * layout.byteSize())として表すことができます。
      戻り値:
      このアドレスから読み取られるint値。
      例外:
      IllegalStateException - このセグメントに関連付けられたスコープがクローズされている場合、またはそのスコープを所有するスレッド以外のスレッドからアクセスが発生した場合。
      IllegalArgumentException - 指定されたレイアウトで間接参照操作が「線形拘束と互換性がありません」の場合、またはレイアウト配置がそのサイズより大きい場合。
      IndexOutOfBoundsException - 間接参照操作がメモリー・セグメントの「空間境界」の外側にある場合。
    • setAtIndex

      default void setAtIndex(ValueLayout.OfInt layout, long index, int value)
      このセグメントおよび索引にintを書き込み、特定のレイアウト・サイズでスケーリングします。
      パラメータ:
      layout - 書き込まれるメモリー・リージョンのレイアウト。
      index - 索引(このセグメントに対する相対値)。 たとえば、このセグメントが「ネイティブ」セグメントの場合、この書込み操作の最終アドレスをaddress().toRowLongValue() + (index * layout.byteSize())として表すことができます。
      value - 書き込まれるint値。
      例外:
      IllegalStateException - このセグメントに関連付けられたスコープがクローズされている場合、またはそのスコープを所有するスレッド以外のスレッドからアクセスが発生した場合。
      IllegalArgumentException - 指定されたレイアウトで間接参照操作が「線形拘束と互換性がありません」の場合、またはレイアウト配置がそのサイズより大きい場合。
      IndexOutOfBoundsException - 間接参照操作がメモリー・セグメントの「空間境界」の外側にある場合。
      UnsupportedOperationException - このセグメントがread-onlyの場合。
    • getAtIndex

      default float getAtIndex(ValueLayout.OfFloat layout, long index)
      このセグメントおよび索引から浮動小数点を読み取り、特定のレイアウト・サイズでスケーリングします。
      パラメータ:
      layout - 読み取るメモリー・リージョンのレイアウト。
      index - 索引(このセグメントに対する相対値)。 たとえば、このセグメントが「ネイティブ」セグメントの場合、この読取り操作の最終アドレスをaddress().toRowLongValue() + (index * layout.byteSize())として表すことができます。
      戻り値:
      このアドレスから読み取られる浮動小数点値。
      例外:
      IllegalStateException - このセグメントに関連付けられたスコープがクローズされている場合、またはそのスコープを所有するスレッド以外のスレッドからアクセスが発生した場合。
      IllegalArgumentException - 指定されたレイアウトで間接参照操作が「線形拘束と互換性がありません」の場合、またはレイアウト配置がそのサイズより大きい場合。
      IndexOutOfBoundsException - 間接参照操作がメモリー・セグメントの「空間境界」の外側にある場合。
    • setAtIndex

      default void setAtIndex(ValueLayout.OfFloat layout, long index, float value)
      特定のレイアウト・サイズでスケーリングされた、このセグメントおよび索引に浮動小数点を書き込みます。
      パラメータ:
      layout - 書き込まれるメモリー・リージョンのレイアウト。
      index - 索引(このセグメントに対する相対値)。 たとえば、このセグメントが「ネイティブ」セグメントの場合、この書込み操作の最終アドレスをaddress().toRowLongValue() + (index * layout.byteSize())として表すことができます。
      value - 書き込まれるfloat値。
      例外:
      IllegalStateException - このセグメントに関連付けられたスコープがクローズされている場合、またはそのスコープを所有するスレッド以外のスレッドからアクセスが発生した場合。
      IllegalArgumentException - 指定されたレイアウトで間接参照操作が「線形拘束と互換性がありません」の場合、またはレイアウト配置がそのサイズより大きい場合。
      IndexOutOfBoundsException - 間接参照操作がメモリー・セグメントの「空間境界」の外側にある場合。
      UnsupportedOperationException - このセグメントがread-onlyの場合。
    • getAtIndex

      default long getAtIndex(ValueLayout.OfLong layout, long index)
      このセグメントおよび索引から、特定のレイアウト・サイズでスケーリングされた長い値を読み取ります。
      パラメータ:
      layout - 読み取るメモリー・リージョンのレイアウト。
      index - 索引(このセグメントに対する相対値)。 たとえば、このセグメントが「ネイティブ」セグメントの場合、この読取り操作の最終アドレスをaddress().toRowLongValue() + (index * layout.byteSize())として表すことができます。
      戻り値:
      このアドレスから読み取られる長い値。
      例外:
      IllegalStateException - このセグメントに関連付けられたスコープがクローズされている場合、またはそのスコープを所有するスレッド以外のスレッドからアクセスが発生した場合。
      IllegalArgumentException - 指定されたレイアウトで間接参照操作が「線形拘束と互換性がありません」の場合、またはレイアウト配置がそのサイズより大きい場合。
      IndexOutOfBoundsException - 間接参照操作がメモリー・セグメントの「空間境界」の外側にある場合。
    • setAtIndex

      default void setAtIndex(ValueLayout.OfLong layout, long index, long value)
      このセグメントおよび索引に長い時間を書き込み、特定のレイアウト・サイズでスケーリングします。
      パラメータ:
      layout - 書き込まれるメモリー・リージョンのレイアウト。
      index - 索引(このセグメントに対する相対値)。 たとえば、このセグメントが「ネイティブ」セグメントの場合、この書込み操作の最終アドレスをaddress().toRowLongValue() + (index * layout.byteSize())として表すことができます。
      value - 書き込まれるlong値。
      例外:
      IllegalStateException - このセグメントに関連付けられたスコープがクローズされている場合、またはそのスコープを所有するスレッド以外のスレッドからアクセスが発生した場合。
      IllegalArgumentException - 指定されたレイアウトで間接参照操作が「線形拘束と互換性がありません」の場合、またはレイアウト配置がそのサイズより大きい場合。
      IndexOutOfBoundsException - 間接参照操作がメモリー・セグメントの「空間境界」の外側にある場合。
      UnsupportedOperationException - このセグメントがread-onlyの場合。
    • getAtIndex

      default double getAtIndex(ValueLayout.OfDouble layout, long index)
      指定されたレイアウト・サイズでスケーリングされた、このセグメントおよび索引から倍精度浮動小数点数を読み取ります。
      パラメータ:
      layout - 読み取るメモリー・リージョンのレイアウト。
      index - 索引(このセグメントに対する相対値)。 たとえば、このセグメントが「ネイティブ」セグメントの場合、この読取り操作の最終アドレスをaddress().toRowLongValue() + (index * layout.byteSize())として表すことができます。
      戻り値:
      このアドレスから読み取られる二重値。
      例外:
      IllegalStateException - このセグメントに関連付けられたスコープがクローズされている場合、またはそのスコープを所有するスレッド以外のスレッドからアクセスが発生した場合。
      IllegalArgumentException - 指定されたレイアウトで間接参照操作が「線形拘束と互換性がありません」の場合、またはレイアウト配置がそのサイズより大きい場合。
      IndexOutOfBoundsException - 間接参照操作がメモリー・セグメントの「空間境界」の外側にある場合。
    • setAtIndex

      default void setAtIndex(ValueLayout.OfDouble layout, long index, double value)
      指定されたレイアウト・サイズでスケーリングされた、このセグメントおよび索引に倍精度で書込みを行います。
      パラメータ:
      layout - 書き込まれるメモリー・リージョンのレイアウト。
      index - 索引(このセグメントに対する相対値)。 たとえば、このセグメントが「ネイティブ」セグメントの場合、この書込み操作の最終アドレスをaddress().toRowLongValue() + (index * layout.byteSize())として表すことができます。
      value - 書き込まれるdouble値。
      例外:
      IllegalStateException - このセグメントに関連付けられたスコープがクローズされている場合、またはそのスコープを所有するスレッド以外のスレッドからアクセスが発生した場合。
      IllegalArgumentException - 指定されたレイアウトで間接参照操作が「線形拘束と互換性がありません」の場合、またはレイアウト配置がそのサイズより大きい場合。
      IndexOutOfBoundsException - 間接参照操作がメモリー・セグメントの「空間境界」の外側にある場合。
      UnsupportedOperationException - このセグメントがread-onlyの場合。
    • getAtIndex

      default MemoryAddress getAtIndex(ValueLayout.OfAddress layout, long index)
      指定されたレイアウト・サイズでスケーリングされた、このセグメントおよび索引からアドレスを読み取ります。
      パラメータ:
      layout - 読み取るメモリー・リージョンのレイアウト。
      index - 索引(このセグメントに対する相対値)。 たとえば、このセグメントが「ネイティブ」セグメントの場合、この読取り操作の最終アドレスをaddress().toRowLongValue() + (index * layout.byteSize())として表すことができます。
      戻り値:
      このアドレスから読み取られたアドレス値。
      例外:
      IllegalStateException - このセグメントに関連付けられたスコープがクローズされている場合、またはそのスコープを所有するスレッド以外のスレッドからアクセスが発生した場合。
      IllegalArgumentException - 指定されたレイアウトで間接参照操作が「線形拘束と互換性がありません」の場合、またはレイアウト配置がそのサイズより大きい場合。
      IndexOutOfBoundsException - 間接参照操作がメモリー・セグメントの「空間境界」の外側にある場合。
    • setAtIndex

      default void setAtIndex(ValueLayout.OfAddress layout, long index, Addressable value)
      指定されたレイアウト・サイズでスケーリングされたアドレスをこのセグメントおよび索引に書き込みます。
      パラメータ:
      layout - 書き込まれるメモリー・リージョンのレイアウト。
      index - 索引(このセグメントに対する相対値)。 たとえば、このセグメントが「ネイティブ」セグメントの場合、この書込み操作の最終アドレスをaddress().toRowLongValue() + (index * layout.byteSize())として表すことができます。
      value - 書き込まれるアドレス値。
      例外:
      IllegalStateException - このセグメントに関連付けられたスコープがクローズされている場合、またはそのスコープを所有するスレッド以外のスレッドからアクセスが発生した場合。
      IllegalArgumentException - 指定されたレイアウトで間接参照操作が「線形拘束と互換性がありません」の場合、またはレイアウト配置がそのサイズより大きい場合。
      IndexOutOfBoundsException - 間接参照操作がメモリー・セグメントの「空間境界」の外側にある場合。
      UnsupportedOperationException - このセグメントがread-onlyの場合。
    • copy

      static void copy(MemorySegment srcSegment, ValueLayout srcLayout, long srcOffset, Object dstArray, int dstIndex, int elementCount)
      指定されたソース要素レイアウトを使用して、ソース・セグメントから宛先配列に多数の要素をコピーし、指定されたセグメント・オフセット(バイトで表されます)および特定の配列索引から開始します。 サポートされる配列タイプは、byte[], char[], short[], int[], float[], long[]およびdouble[]です。
      パラメータ:
      srcSegment - ソース・セグメント。
      srcLayout - ソース要素のレイアウト。 レイアウトに関連付けられたバイト順序がネイティブ順序と異なる場合、各配列要素に対してバイト・スワップ操作が実行されます。
      srcOffset - ソース・セグメントの開始オフセット(バイト単位)。
      dstArray - 宛先配列。
      dstIndex - 宛先配列の開始索引。
      elementCount - コピーする配列要素の数。
      例外:
      IllegalArgumentException - dstArrayが配列ではない場合、またはデータ型がサポートされていない配列である場合、宛先配列コンポーネント・タイプがソース要素レイアウトのキャリアと一致しない場合、ソース要素レイアウトのソース・セグメント/オフセットが「線形拘束と互換性がありません」である場合、または宛先要素レイアウトの配置がそのサイズより大きい場合。
    • copy

      static void copy(Object srcArray, int srcIndex, MemorySegment dstSegment, ValueLayout dstLayout, long dstOffset, int elementCount)
      指定された宛先要素レイアウトを使用して、ソース配列から宛先セグメントに多数の要素をコピーし、指定された配列索引から、指定されたセグメント・オフセット(バイトで表されます)から開始します。 サポートされる配列タイプは、byte[], char[], short[], int[], float[], long[]およびdouble[]です。
      パラメータ:
      srcArray - ソース配列。
      srcIndex - ソース配列の開始インデックス。
      dstSegment - 宛先セグメント。
      dstLayout - 宛先要素レイアウト。 レイアウトに関連付けられたバイト順序がネイティブ順序と異なる場合、各配列要素に対してバイト・スワップ操作が実行されます。
      dstOffset - 宛先セグメントの開始オフセット(バイト単位)。
      elementCount - コピーする配列要素の数。
      例外:
      IllegalArgumentException - srcArrayが配列でない場合、またはそれが配列であり、その型がサポートされていない場合、ソース配列コンポーネント・タイプが宛先要素レイアウトのキャリアと一致しない場合、宛先要素レイアウトで宛先セグメント/オフセットが「線形拘束と互換性がありません」の場合、または宛先要素レイアウトの配置がそのサイズより大きい場合。