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

インタフェースMemorySegment

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

public sealed interface MemorySegment extends AddressablePREVIEW
MemorySegmentは、JavaプラットフォームのプレビューAPIです。
プレビュー機能が有効な場合のみ、プログラムでMemorySegmentを使用できます。
プレビュー機能は、今後のリリースで削除するか、Javaプラットフォームの永続機能にアップグレードすることができます。
メモリー・セグメントは、連続するメモリー・リージョンをモデル化します。 メモリー・セグメントは、空間境界と時間境界の両方(例、MemorySessionPREVIEW)に関連付けられます。 空間境界は、メモリー・セグメントに対するメモリー・アクセス操作が、「外部」にアクセスされるメモリー・セグメントの境界よりも少ないメモリーのロケーションに影響を与えないようにします。 一時的な境界により、メモリー・セグメントに関連付けられたメモリー・セッションが(MemorySession.close()PREVIEWを参照してください)で閉じられた後に、セグメントに対するメモリー・アクセス演算が発生しないようにします。 メモリー・セグメントには様々な種類があります:

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

メモリー・セグメントは、「メモリー・セッション」に関連付けられます。 メモリー・セッションに関連付けられたすべてのリソースについて、その基礎となるセッションが閉じられた後にセグメントにアクセスすることはできません。 たとえば、次のコードは例外になります:
MemorySegment segment = null;
try (MemorySession session = MemorySession.openConfined()) {
    segment = MemorySegment.allocateNative(8, session);
}
segment.get(ValueLayout.JAVA_LONG, 0); // already closed!
さらに、メモリー・セグメントへのアクセスは、所有メモリー・セッションによって適用されるスレッド制限チェックの対象となります。つまり、セグメントが共有セッションに関連付けられている場合は、複数のスレッドからアクセスできます。制限付きセッションに関連付けられている場合は、メモリー・セッションを所有するスレッドのみがアクセスできます。

ヒープ・セグメントは常にglobalPREVIEWメモリー・セッションに関連付けられます。 このセッションはクローズできず、それに関連付けられたセグメントを「いつも生きている」とみなすことができます。 バッファ・セグメントは通常、グローバル・メモリー・セッションに関連付けられますが、例外は1つです: メモリー・セグメントSasByteBuffer()メソッドをコールして取得したバイト・バッファ・インスタンスから作成されたバッファ・セグメントは、Sと同じメモリー・セッションに関連付けられます。

メモリー・セグメントの参照解除

メモリー・セグメントは、このクラス(たとえば、get(ValueLayout.OfInt, long))で提供される様々なメソッドを使用して読取りまたは書込みできます。 各間接参照メソッドは、サイズ、整列制約、バイト順序、間接参照演算に関連付けられたJavaタイプおよびオフセットを指定する「値レイアウト」PREVIEWを取ります。 たとえば、「デフォルトのエンディアン」を使用してセグメントから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);
より複雑な間接参照演算(例、構造化メモリー・アクセス)の場合、クライアントは「メモリー・セグメント・ビューの可変ハンドル」PREVIEW、つまりセグメントおよびlongオフセットを受け入れるvarハンドルを取得できます。 MethodHandlesクラスで定義されたvarハンドル・コンビネータ関数を使用してセグメントvarハンドル・ビューを適応させることで、より複雑なアクセスvarハンドルを取得できます:
MemorySegment segment = ...
VarHandle intHandle = MethodHandles.memorySegmentViewVarHandle(ValueLayout.JAVA_INT);
MethodHandle multiplyExact = MethodHandles.lookup()
                                          .findStatic(Math.class, "multiplyExact",
                                                                  MethodType.methodType(long.class, long.class, long.class));
intHandle = MethodHandles.filterCoordinates(intHandle, 1,
                                            MethodHandles.insertArguments(multiplyExact, 0, 4L));
intHandle.get(segment, 3L); // get int element at offset 3 * 4 = 12
または、レイアウト・パスと呼ばれるように指定することで、メモリー・レイアウトPREVIEWから複雑なアクセス変数ハンドルを取得できます:
MemorySegment segment = ...
VarHandle intHandle = ValueLayout.JAVA_INT.arrayElementVarHandle();
intHandle.get(segment, 3L); // get int element at offset 3 * 4 = 12

メモリー・セグメントのスライス

メモリー・セグメントは「スライス」をサポートしています。 メモリー・セグメントは、基礎となる同じメモリー・リージョンによって支えられた他のセグメントを「入手」するために使用できますが、元のセグメントのものより「厳しい」空間境界があります:
MemorySession session = ...
MemorySegment segment = MemorySegment.allocateNative(100, session);
MemorySegment slice = segment.asSlice(50, 10);
slice.get(ValueLayout.JAVA_INT, 20); // Out of bounds!
session.close();
slice.get(ValueLayout.JAVA_INT, 0); // Already closed!
前述のコードでは、長さが100バイトのネイティブ・セグメントが作成され、segmentのオフセット50から始まり、長さが10バイトのスライスが作成されます。 その結果、sliceセグメントのオフセット20でint値を読み取ろうとすると例外が発生します。 元のセグメントの「一時的な境界」PREVIEWはスライスによって継承されます。つまり、segmentに関連付けられたメモリー・セッションが閉じられると、sliceもアクセスできなくなります。

クライアントはセグメントからStreamを取得し、これを使用してセグメント(指定された要素レイアウトに従って)をスライスし、複数のスレッドが分離セグメント・スライス(これを行うには、セグメントを共有メモリー・セッションに関連付ける必要があります)で並行して動作するようにすることもできます。 次のコードを使用すると、メモリー・セグメント内のすべてのint値を並列に合計できます:

try (MemorySession session = MemorySession.openShared()) {
    SequenceLayout SEQUENCE_LAYOUT = MemoryLayout.sequenceLayout(1024, ValueLayout.JAVA_INT);
    MemorySegment segment = MemorySegment.allocateNative(SEQUENCE_LAYOUT, session);
    int sum = segment.elements(ValueLayout.JAVA_INT).parallel()
                     .mapToInt(s -> s.get(ValueLayout.JAVA_INT, 0))
                     .sum();
}

位置合せ

レイアウトを使用してメモリー・セグメントを間接参照する場合、ランタイムは、参照解除されるセグメント・アドレスがレイアウト「線形拘束」PREVIEWと一致することを確認する必要があります。 参照解除されるセグメントがネイティブ・セグメントである場合、境界整列チェックの実行に使用できる具体的な「ベース・アドレス」があります。 次の擬似関数では、次のようになります:
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に属するかを決定するには、最終的に実装に依存する詳細について推論する必要があります。

制限付きメモリー・セグメント

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

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

実装要件:
このインタフェースの実装は不変、スレッド・セーフ、およびvalue-basedです。
導入されたバージョン:
19
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    このネイティブ・メモリー・セグメントに関連付けられたベース・メモリー・アドレスを返します。
    allocateNative(long bytesSize, long alignmentBytes, MemorySessionPREVIEW session)
    指定されたサイズ(バイト単位)、整列制約(バイト単位)およびメモリー・セッションでネイティブ・メモリー・セグメントを作成します。
    allocateNative(long bytesSize, MemorySessionPREVIEW session)
    指定されたサイズ(バイト単位)およびメモリー・セッションでネイティブ・メモリー・セグメントを作成します。
    指定されたレイアウトおよびメモリー・セッションでネイティブ・メモリー・セグメントを作成します。
    ByteBufferでこのセグメントをラップします。
    このセグメントと指定されたセグメントの間の重複である、このセグメントのスライスを返します。
    このセグメントの読取り専用ビューを返します。
    asSlice(long offset)
    指定されたオフセットで、このメモリー・セグメントのスライスを返します。
    asSlice(long offset, long newSize)
    指定されたオフセットで、このメモリー・セグメントのスライスを返します。
    long
    このメモリー・セグメントのサイズ(バイト単位)を返します。
    static void
    copy(MemorySegmentPREVIEW srcSegment, long srcOffset, MemorySegmentPREVIEW dstSegment, long dstOffset, long bytes)
    ソース・セグメントから宛先セグメントへの一括コピーを実行します。
    static void
    copy(MemorySegmentPREVIEW srcSegment, ValueLayoutPREVIEW srcElementLayout, long srcOffset, MemorySegmentPREVIEW dstSegment, ValueLayoutPREVIEW dstElementLayout, long dstOffset, long elementCount)
    ソース・セグメントから宛先セグメントへの一括コピーを実行します。
    static void
    copy(MemorySegmentPREVIEW srcSegment, ValueLayoutPREVIEW srcLayout, long srcOffset, Object dstArray, int dstIndex, int elementCount)
    ソース・メモリー・セグメントから宛先配列に多数の要素をコピーします。
    static void
    copy(Object srcArray, int srcIndex, MemorySegmentPREVIEW dstSegment, ValueLayoutPREVIEW dstLayout, long dstOffset, int elementCount)
    ソース配列から宛先メモリー・セグメントに多数の要素をコピーします。
    指定されたソース・セグメントからこのセグメントへの一括コピーを実行します。
    このセグメント内の分離スライス(指定したレイアウトのサイズと一致するサイズ)に対して連続したStreamを返します。
    boolean
    equals(Object that)
    指定されたオブジェクトをこのメモリー・セグメントと比較し、等しいかどうかを調べます。
    fill(byte value)
    このメモリー・セグメントに値を入力します。
    void
    マップされたセグメント・ファイル記述子によって記述されたストレージ・デバイスに、このマップされたセグメントの内容に加えた変更を強制的に書き込みます。
    get(ValueLayout.OfAddressPREVIEW layout, long offset)
    指定されたレイアウトで、指定されたオフセットでこのセグメントからアドレスを読み取ります。
    default boolean
    get(ValueLayout.OfBooleanPREVIEW layout, long offset)
    指定されたオフセットを使用して、このセグメントからブールを読み取ります。
    default byte
    get(ValueLayout.OfBytePREVIEW layout, long offset)
    指定されたレイアウトで、指定されたオフセットでこのセグメントからバイトを読み取ります。
    default char
    get(ValueLayout.OfCharPREVIEW layout, long offset)
    指定されたレイアウトで、指定されたオフセットでこのセグメントからcharを読み取ります。
    default double
    get(ValueLayout.OfDoublePREVIEW layout, long offset)
    指定されたレイアウトで、指定されたオフセットでこのセグメントから倍精度浮動小数点数を読み取ります。
    default float
    get(ValueLayout.OfFloatPREVIEW layout, long offset)
    指定されたレイアウトを使用して、指定されたオフセットでこのセグメントからフロートを読み取ります。
    default int
    get(ValueLayout.OfIntPREVIEW layout, long offset)
    指定されたレイアウトを使用して、指定されたオフセットでこのセグメントからintを読み取ります。
    default long
    get(ValueLayout.OfLongPREVIEW layout, long offset)
    指定されたレイアウトを使用して、指定されたオフセットでこのセグメントからlongを読み取ります。
    default short
    get(ValueLayout.OfShortPREVIEW layout, long offset)
    指定されたレイアウトで、指定されたオフセットでこのセグメントからshortを読み取ります。
    指定された索引で、指定されたレイアウト・サイズでスケールされたアドレスをこのセグメントから読み取ります。
    default char
    指定された索引のこのセグメントから、指定されたレイアウト・サイズで拡大縮小されたcharを読み取ります。
    default double
    指定された索引で、指定されたレイアウト・サイズで倍精度浮動小数点数を読み取ります。
    default float
    指定された索引のこのセグメントからフロートを読み取り、指定されたレイアウト・サイズでスケールします。
    default int
    getAtIndex(ValueLayout.OfIntPREVIEW layout, long index)
    指定されたレイアウト・サイズでスケールされた、指定された索引のこのセグメントからintを読み取ります。
    default long
    指定された索引でこのセグメントから、指定されたレイアウト・サイズでスケールされたlongを読み取ります。
    default short
    指定された索引のこのセグメントから、指定されたレイアウト・サイズでスケールされたshortを読み取ります。
    default String
    getUtf8String(long offset)
    指定されたオフセットでこのセグメントからUTF-8エンコードされたNULL終了文字列を読み取ります。
    int
    このメモリー・セグメントのハッシュ・コード値を返します。
    boolean
    このマップされたセグメントの内容が物理メモリーに存在するかどうかを決定します。
    boolean
    このセグメントがマップされたセグメントの場合は、trueを返します。
    boolean
    このセグメントがネイティブ・セグメントの場合は、trueを返します。
    boolean
    このセグメントが読取り専用の場合、trueを返します。
    void
    このマップされたセグメントの内容を物理メモリーにロードします。
    long
    このセグメントと指定された他のセグメントとの間で最初の不一致のオフセットをバイト単位で検索して返します。
    ofAddress(MemoryAddressPREVIEW address, long bytesSize, MemorySessionPREVIEW session)
    指定されたサイズ、ベース・アドレス、およびメモリー・セッションでネイティブ・メモリー・セグメントを作成します。
    ofArray(byte[] arr)
    指定されたヒープ割り当てバイト配列に関連付けられたメモリーをモデル化する配列メモリー・セグメントを作成します。
    ofArray(char[] arr)
    指定されたヒープ割り当てchar配列に関連付けられたメモリーをモデル化する配列メモリー・セグメントを作成します。
    ofArray(double[] arr)
    指定されたヒープ割り当て倍精度配列に関連付けられたメモリーをモデル化する配列メモリー・セグメントを作成します。
    ofArray(float[] arr)
    指定されたヒープ割り当てフロート配列に関連付けられたメモリーをモデル化する配列メモリー・セグメントを作成します。
    ofArray(int[] arr)
    指定されたヒープ割当てint配列に関連付けられたメモリーをモデル化する配列メモリー・セグメントを作成します。
    ofArray(long[] arr)
    指定されたヒープ割り当て長配列に関連付けられたメモリーをモデル化する配列メモリー・セグメントを作成します。
    ofArray(short[] arr)
    指定されたヒープ割り当てショート・アレイに関連付けられたメモリーをモデル化するアレイ・メモリー・セグメントを作成します。
    ofBuffer(Buffer buffer)
    指定されたBufferインスタンスに関連付けられたメモリーをモデル化するバッファ・メモリー・セグメントを作成します。
    long
    このセグメントに対して指定されたセグメントのオフセット(バイト単位)を返します。
    このメモリー・セグメントに関連付けられたメモリー・セッションを返します。
    default void
    set(ValueLayout.OfAddressPREVIEW layout, long offset, AddressablePREVIEW value)
    指定されたレイアウトを使用して、指定されたオフセットでこのセグメントにアドレスを書き込みます。
    default void
    set(ValueLayout.OfBooleanPREVIEW layout, long offset, boolean value)
    指定されたレイアウトを使用して、指定されたオフセットでこのセグメントにブール値を書き込みます。
    default void
    set(ValueLayout.OfBytePREVIEW layout, long offset, byte value)
    指定されたレイアウトを使用して、指定されたオフセットでこのセグメントにバイトを書き込みます。
    default void
    set(ValueLayout.OfCharPREVIEW layout, long offset, char value)
    指定されたレイアウトを使用して、指定されたオフセットでこのセグメントに文字を書き込みます。
    default void
    set(ValueLayout.OfDoublePREVIEW layout, long offset, double value)
    指定されたレイアウトを使用して、指定されたオフセットでこのセグメントにdoubleを書き込みます。
    default void
    set(ValueLayout.OfFloatPREVIEW layout, long offset, float value)
    指定されたレイアウトを使用して、指定されたオフセットでこのセグメントにフロートを書き込みます。
    default void
    set(ValueLayout.OfIntPREVIEW layout, long offset, int value)
    指定されたレイアウトを使用して、指定されたオフセットでこのセグメントにintを書き込みます。
    default void
    set(ValueLayout.OfLongPREVIEW layout, long offset, long value)
    指定されたレイアウトを使用して、指定されたオフセットでこのセグメントにlongを書き込みます。
    default void
    set(ValueLayout.OfShortPREVIEW layout, long offset, short value)
    指定されたレイアウトを使用して、指定されたオフセットでこのセグメントにshortを書き込みます。
    default void
    指定された索引で、指定されたレイアウト・サイズでスケールされたアドレスをこのセグメントに書き込みます。
    default void
    setAtIndex(ValueLayout.OfCharPREVIEW layout, long index, char value)
    指定された索引で、指定されたレイアウト・サイズでスケールされたcharをこのセグメントに書き込みます。
    default void
    setAtIndex(ValueLayout.OfDoublePREVIEW layout, long index, double value)
    指定された索引で、指定されたレイアウト・サイズでスケールされた倍精度浮動小数点数をこのセグメントに書き込みます。
    default void
    setAtIndex(ValueLayout.OfFloatPREVIEW layout, long index, float value)
    指定された索引でこのセグメントにフロートを書き込み、指定されたレイアウト・サイズでスケールします。
    default void
    setAtIndex(ValueLayout.OfIntPREVIEW layout, long index, int value)
    指定された索引で、指定されたレイアウト・サイズでスケールされたintをこのセグメントに書き込みます。
    default void
    setAtIndex(ValueLayout.OfLongPREVIEW layout, long index, long value)
    指定された索引で、所定のレイアウト・サイズでスケールされたlongをこのセグメントに書き込みます。
    default void
    setAtIndex(ValueLayout.OfShortPREVIEW layout, long index, short value)
    指定された索引で、指定されたレイアウト・サイズでスケールされたこのセグメントにshortを書き込みます。
    default void
    setUtf8String(long offset, String str)
    指定された文字列を指定されたオフセットでこのセグメントに書き込み、UTF-8エンコーディングを使用してNULLで終了するバイト・シーケンスに変換します。
    このメモリー・セグメントのスプリッテレータを返します。
    byte[]
    このメモリー・セグメントの内容を新しいバイト配列にコピーします。
    char[]
    このメモリー・セグメントの内容を新しいchar配列にコピーします。
    double[]
    このメモリー・セグメントの内容を新しい二重配列にコピーします。
    float[]
    このメモリー・セグメントの内容を新しい浮動小数配列にコピーします。
    int[]
    このメモリー・セグメントの内容を新しいint配列にコピーします。
    long[]
    このメモリー・セグメントの内容を新しい長い配列にコピーします。
    short[]
    このメモリー・セグメントの内容を新しい短い配列にコピーします。
    void
    このマップされたセグメントの内容を物理メモリーからアンロードします。
  • メソッドの詳細

    • address

      このネイティブ・メモリー・セグメントに関連付けられたベース・メモリー・アドレスを返します。
      定義:
      インタフェースAddressablePREVIEW内のaddress
      戻り値:
      このネイティブ・メモリー・セグメントに関連付けられたベース・メモリー・アドレス
      例外:
      UnsupportedOperationException - このセグメントが「ネイティブ」セグメントでない場合。
      IllegalStateException - このセグメントに関連付けられている「セッション」alivePREVIEWでない場合。
      WrongThreadException - このメソッドが、このセグメントに関連付けられた「セッション」を所有するスレッド以外のスレッドからコールされる場合。
    • spliterator

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

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

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

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

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

      このメモリー・セグメントに関連付けられたメモリー・セッションを返します。
      戻り値:
      このメモリー・セグメントに関連付けられたメモリー・セッション
    • byteSize

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

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

      default MemorySegmentPREVIEW asSlice(long offset)
      指定されたオフセットで、このメモリー・セグメントのスライスを返します。 返されるセグメント・ベース・アドレスは、このセグメントの基本アドレスと指定されたオフセットです。そのサイズは、指定されたオフセットをこのセグメント・サイズから減算して計算されます。

      次のコードと同等です:

      asSlice(offset, byteSize() - offset);
      

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

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

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

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

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

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

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

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

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

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

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

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

      MemorySegmentPREVIEW 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 - このセグメントに関連付けられている「セッション」alivePREVIEWでない場合。
      WrongThreadException - このメソッドが、このセグメントに関連付けられた「セッション」を所有するスレッド以外のスレッドからコールされる場合。
      UnsupportedOperationException - このセグメントが読取り専用(isReadOnly()を参照してください)の場合。
    • copyFrom

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

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

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

      パラメータ:
      src - ソース・セグメント。
      戻り値:
      このセグメント。
      例外:
      IndexOutOfBoundsException - src.byteSize() > this.byteSize()の場合。
      IllegalStateException - このセグメントに関連付けられている「セッション」alivePREVIEWでない場合。
      WrongThreadException - このメソッドが、このセグメントに関連付けられた「セッション」を所有するスレッド以外のスレッドからコールされる場合。
      IllegalStateException - srcに関連付けられた「セッション」alivePREVIEWでない場合。
      WrongThreadException - このメソッドが、srcに関連付けられた「セッション」を所有するスレッド以外のスレッドからコールされる場合。
      UnsupportedOperationException - このセグメントが読取り専用(isReadOnly()を参照してください)の場合。
    • mismatch

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

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

      パラメータ:
      other - このセグメントとの不一致をテストするセグメント
      戻り値:
      このセグメントと指定された他のセグメント間の最初の不一致の相対オフセット(バイト)。不一致がない場合は -1
      例外:
      IllegalStateException - このセグメントに関連付けられている「セッション」alivePREVIEWでない場合。
      WrongThreadException - このメソッドが、このセグメントに関連付けられた「セッション」を所有するスレッド以外のスレッドからコールされる場合。
      IllegalStateException - otherに関連付けられた「セッション」alivePREVIEWでない場合。
      WrongThreadException - このメソッドが、otherに関連付けられた「セッション」を所有するスレッド以外のスレッドからコールされる場合。
    • isLoaded

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

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

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

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

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

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

      例外:
      IllegalStateException - このセグメントに関連付けられている「セッション」alivePREVIEWでない場合。
      WrongThreadException - このメソッドが、このセグメントに関連付けられた「セッション」を所有するスレッド以外のスレッドからコールされる場合。
      UnsupportedOperationException - このセグメントがマップされたメモリー・セグメントでない場合(例: isMapped() == false)。
    • unload

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

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

      例外:
      IllegalStateException - このセグメントに関連付けられている「セッション」alivePREVIEWでない場合。
      WrongThreadException - このメソッドが、このセグメントに関連付けられた「セッション」を所有するスレッド以外のスレッドからコールされる場合。
      UnsupportedOperationException - このセグメントがマップされたメモリー・セグメントでない場合(例: isMapped() == false)。
    • force

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

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

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

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

      例外:
      IllegalStateException - このセグメントに関連付けられている「セッション」alivePREVIEWでない場合。
      WrongThreadException - このメソッドが、このセグメントに関連付けられた「セッション」を所有するスレッド以外のスレッドからコールされる場合。
      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バッファは返されません。

      返されるバッファのライフサイクルは、このセグメントのライフサイクルと関連します。 つまり、このセグメントに関連付けられたメモリー・セッションが(MemorySession.close()PREVIEWを参照してください)を閉じた後に返されるバッファにアクセスすると、IllegalStateExceptionがスローされます。 同様に、スレッドを「所有している」PREVIEW以外のスレッドから戻されたバッファにアクセスすると、このセグメント・メモリー・セッションによってWrongThreadExceptionがスローされます。

      このセグメントが制限付きメモリー・セッションに関連付けられている場合、結果のバッファで読み取り/書き込み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.OfBytePREVIEW elementLayout)
      このメモリー・セグメントの内容を新しいバイト配列にコピーします。
      パラメータ:
      elementLayout - ソース要素のレイアウト。 レイアウトに関連付けられたバイト順序が「ネイティブ・オーダー」と異なる場合、各配列要素に対してバイト・スワップ演算が実行されます。
      戻り値:
      このメモリー・セグメントから内容がコピーされる新しいバイト配列。
      例外:
      IllegalStateException - このセグメントに関連付けられている「セッション」alivePREVIEWでない場合。
      WrongThreadException - このメソッドが、このセグメントに関連付けられた「セッション」を所有するスレッド以外のスレッドからコールされる場合。
      IllegalStateException - このセグメント・コンテンツをbyte[]インスタンスにコピーできない場合(サイズがInteger.MAX_VALUEより大きい場合など)。
    • toArray

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

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

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

      float[] toArray(ValueLayout.OfFloatPREVIEW elementLayout)
      このメモリー・セグメントの内容を新しい浮動小数配列にコピーします。
      パラメータ:
      elementLayout - ソース要素のレイアウト。 レイアウトに関連付けられたバイト順序が「ネイティブ・オーダー」と異なる場合、各配列要素に対してバイト・スワップ演算が実行されます。
      戻り値:
      このメモリー・セグメントから内容がコピーされる新しい浮動小数配列。
      例外:
      IllegalStateException - このセグメントに関連付けられている「セッション」alivePREVIEWでない場合。
      WrongThreadException - このメソッドが、このセグメントに関連付けられた「セッション」を所有するスレッド以外のスレッドからコールされる場合。
      IllegalStateException - たとえば、byteSize() % 4 != 0またはbyteSize() / 4 > Integer#MAX_VALUEのため、このセグメントの内容をfloat[]インスタンスにコピーできない場合。
    • toArray

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

      double[] toArray(ValueLayout.OfDoublePREVIEW elementLayout)
      このメモリー・セグメントの内容を新しい二重配列にコピーします。
      パラメータ:
      elementLayout - ソース要素のレイアウト。 レイアウトに関連付けられたバイト順序が「ネイティブ・オーダー」と異なる場合、各配列要素に対してバイト・スワップ演算が実行されます。
      戻り値:
      このメモリー・セグメントから内容がコピーされる新しい二重配列。
      例外:
      IllegalStateException - このセグメントに関連付けられている「セッション」alivePREVIEWでない場合。
      WrongThreadException - このメソッドが、このセグメントに関連付けられた「セッション」を所有するスレッド以外のスレッドからコールされる場合。
      IllegalStateException - たとえば、byteSize() % 8 != 0またはbyteSize() / 8 > Integer#MAX_VALUEのため、このセグメントの内容をdouble[]インスタンスにコピーできない場合。
    • getUtf8String

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

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

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

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

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

      指定された文字列に'\0'文字が含まれている場合、それらもコピーされます。 つまり、文字列の読取りに使用されたメソッド(getUtf8String(long)など)に応じて、再度読み取るときに文字列が切り捨てられます。

      パラメータ:
      offset - オフセット(バイト): (このセグメントに対する相対値)。 たとえば、このセグメントが「ネイティブ」セグメントの場合、この書込み演算の最終アドレスをaddress().toRawLongValue() + offsetとして表すことができます。
      str - このセグメントに書き込まれるJava文字列。
      例外:
      IndexOutOfBoundsException - str.getBytes().length() + offset >= byteSize()の場合。
      IllegalStateException - このセグメントに関連付けられている「セッション」alivePREVIEWでない場合。
      WrongThreadException - このメソッドが、このセグメントに関連付けられた「セッション」を所有するスレッド以外のスレッドからコールされる場合。
    • ofBuffer

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

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

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

      パラメータ:
      buffer - バッファ・メモリー・セグメントを支えるバッファ・インスタンス。
      戻り値:
      バッファ・メモリー・セグメント。
    • ofArray

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

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

      static MemorySegmentPREVIEW ofArray(short[] arr)
      指定されたヒープ割り当てショート・アレイに関連付けられたメモリーをモデル化するアレイ・メモリー・セグメントを作成します。 返されるセグメントは、globalPREVIEWメモリー・セッションに関連付けられます。
      パラメータ:
      arr - 配列メモリー・セグメントにバックアップするプリミティブ配列。
      戻り値:
      配列メモリー・セグメント。
    • ofArray

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

      static MemorySegmentPREVIEW ofArray(float[] arr)
      指定されたヒープ割り当てフロート配列に関連付けられたメモリーをモデル化する配列メモリー・セグメントを作成します。 返されるセグメントは、globalPREVIEWメモリー・セッションに関連付けられます。
      パラメータ:
      arr - 配列メモリー・セグメントにバックアップするプリミティブ配列。
      戻り値:
      配列メモリー・セグメント。
    • ofArray

      static MemorySegmentPREVIEW ofArray(long[] arr)
      指定されたヒープ割り当て長配列に関連付けられたメモリーをモデル化する配列メモリー・セグメントを作成します。 返されるセグメントは、globalPREVIEWメモリー・セッションに関連付けられます。
      パラメータ:
      arr - 配列メモリー・セグメントにバックアップするプリミティブ配列。
      戻り値:
      配列メモリー・セグメント。
    • ofArray

      static MemorySegmentPREVIEW ofArray(double[] arr)
      指定されたヒープ割り当て倍精度配列に関連付けられたメモリーをモデル化する配列メモリー・セグメントを作成します。 返されるセグメントは、globalPREVIEWメモリー・セッションに関連付けられます。
      パラメータ:
      arr - 配列メモリー・セグメントにバックアップするプリミティブ配列。
      戻り値:
      配列メモリー・セグメント。
    • ofAddress

      static MemorySegmentPREVIEW ofAddress(MemoryAddressPREVIEW address, long bytesSize, MemorySessionPREVIEW session)
      指定されたサイズ、ベース・アドレス、およびメモリー・セッションでネイティブ・メモリー・セグメントを作成します。 このメソッドは、カスタム・メモリー・ソース(たとえば、カスタム・ロケータ)と相互作用する場合に便利です。基礎となるメモリー・リージョンへのアドレスは通常、外部コード(プレーンlong値として使用されることが多い)から取得されます。

      返されるセグメントは読取り専用(isReadOnly()を参照してください)ではなく、指定されたメモリー・セッションに関連付けられます。

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

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

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

      static MemorySegmentPREVIEW allocateNative(MemoryLayoutPREVIEW layout, MemorySessionPREVIEW session)
      指定されたレイアウトおよびメモリー・セッションでネイティブ・メモリー・セグメントを作成します。 クライアントは、セグメントが使用されなくなったときに、返されたセグメントに関連付けられたメモリー・セッションが閉じられるようにします。 これを行わなかった場合、ヒープ外のメモリー・リークが発生します。

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

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

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

      パラメータ:
      layout - ネイティブ・メモリー・セグメントのバッキングの非ヒープ・メモリー・ブロックのレイアウト。
      session - セグメント・メモリー・セッション。
      戻り値:
      新しいネイティブ・メモリー・セグメント。
      例外:
      IllegalStateException - sessionalivePREVIEWでない場合。
      WrongThreadException - このメソッドが、session「所有している」PREVIEWスレッド以外のスレッドからコールされる場合。
    • allocateNative

      static MemorySegmentPREVIEW allocateNative(long bytesSize, MemorySessionPREVIEW session)
      指定されたサイズ(バイト単位)およびメモリー・セッションでネイティブ・メモリー・セグメントを作成します。 クライアントは、セグメントが使用されなくなったときに、返されたセグメントに関連付けられたメモリー・セッションが閉じられるようにします。 これを行わなかった場合、ヒープ外のメモリー・リークが発生します。

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

      allocateNative(bytesSize, 1, session);
      

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

      パラメータ:
      bytesSize - ネイティブ・メモリー・セグメントのバッキングのヒープ外メモリー・ブロックのサイズ(バイト単位)。
      session - セグメントの一時的な境界。
      戻り値:
      新しいネイティブ・メモリー・セグメント。
      例外:
      IllegalArgumentException - bytesSize < 0の場合。
      IllegalStateException - sessionalivePREVIEWでない場合。
      WrongThreadException - このメソッドが、session「所有している」PREVIEWスレッド以外のスレッドからコールされる場合。
    • allocateNative

      static MemorySegmentPREVIEW allocateNative(long bytesSize, long alignmentBytes, MemorySessionPREVIEW session)
      指定されたサイズ(バイト単位)、整列制約(バイト単位)およびメモリー・セッションでネイティブ・メモリー・セグメントを作成します。 クライアントは、セグメントが使用されなくなったときに、返されたセグメントに関連付けられたメモリー・セッションが閉じられるようにします。 これを行わなかった場合、ヒープ外のメモリー・リークが発生します。

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

      パラメータ:
      bytesSize - ネイティブ・メモリー・セグメントのバッキングのヒープ外メモリー・ブロックのサイズ(バイト単位)。
      alignmentBytes - ネイティブ・メモリー・セグメントのバッキングのヒープ外メモリー・ブロックの位置合せ制約(バイト単位)。
      session - セグメント・メモリー・セッション。
      戻り値:
      新しいネイティブ・メモリー・セグメント。
      例外:
      IllegalArgumentException - bytesSize < 0alignmentBytes <= 0またはalignmentBytesが2の累乗でない場合。
      IllegalStateException - sessionalivePREVIEWでない場合。
      WrongThreadException - このメソッドが、session「所有している」PREVIEWスレッド以外のスレッドからコールされる場合。
    • copy

      static void copy(MemorySegmentPREVIEW srcSegment, long srcOffset, MemorySegmentPREVIEW 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 - srcSegmentに関連付けられた「セッション」alivePREVIEWでない場合。
      WrongThreadException - このメソッドが、srcSegmentに関連付けられた「セッション」を所有するスレッド以外のスレッドからコールされる場合。
      IllegalStateException - dstSegmentに関連付けられた「セッション」alivePREVIEWでない場合。
      WrongThreadException - このメソッドが、dstSegmentに関連付けられた「セッション」を所有するスレッド以外のスレッドからコールされる場合。
      IndexOutOfBoundsException - srcOffset + bytes > srcSegment.byteSize()またはdstOffset + bytes > dstSegment.byteSize()の場合、またはsrcOffsetdstOffsetまたはbytesのいずれかが< 0の場合。
      UnsupportedOperationException - 宛先セグメントが読取り専用(isReadOnly()を参照してください)の場合。
    • copy

      static void copy(MemorySegmentPREVIEW srcSegment, ValueLayoutPREVIEW srcElementLayout, long srcOffset, MemorySegmentPREVIEW dstSegment, ValueLayoutPREVIEW 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 - srcSegmentに関連付けられた「セッション」alivePREVIEWでない場合。
      WrongThreadException - このメソッドが、このsrcSegmentに関連付けられた「セッション」を所有するスレッド以外のスレッドからコールされる場合。
      IllegalStateException - dstSegmentに関連付けられた「セッション」alivePREVIEWでない場合。
      WrongThreadException - このメソッドが、dstSegmentに関連付けられた「セッション」を所有するスレッド以外のスレッドからコールされる場合。
      IndexOutOfBoundsException - srcOffset + (elementCount * S) > srcSegment.byteSize()の場合、またはdstOffset + (elementCount * S) > dstSegment.byteSize()の場合(Sは要素レイアウトのバイト・サイズ、またはsrcOffsetdstOffsetまたはelementCountのいずれかが< 0の場合)。
      UnsupportedOperationException - 宛先セグメントが読取り専用(isReadOnly()を参照してください)の場合。
    • get

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      boolean equals(Object that)
      指定されたオブジェクトをこのメモリー・セグメントと比較し、等しいかどうかを調べます。 指定されたオブジェクトがメモリー・セグメントでもある場合、およびそのセグメントがこのセグメントと同じメモリー・リージョンを参照している場合にのみ、trueを返します。 さらに具体的には、2つのセグメントを等しいとみなすには、次のすべてを満たす必要があります:
      • 2つのセグメントは同じ種類である必要があります。両方とも「ネイティブ・セグメント」、オフ・ヒープ・メモリーによってバックアップされるか、両方がヒープ・メモリーによってバックアップされます
      • 2つのセグメントが「ネイティブ・セグメント」の場合、そのbase addressequalPREVIEWである必要があります。 それ以外の場合、2つのセグメントは同じJava配列インスタンスを同じ開始オフセットでラップする必要があります
      • 2つのセグメントが同じsizeを持つ必要があります
      • 2つのセグメントには、samePREVIEW 「一時的な境界」が必要です。
      オーバーライド:
      equals、クラスObject
      APIのノート:
      このメソッドでは、2つのメモリー・セグメントの内容の構造比較は実行されません。 クライアントは、かわりにmismatch(MemorySegment)メソッドを使用してメモリー・セグメントを構造的に比較できます。
      パラメータ:
      that - このメモリー・セグメントとの等価性を比較するオブジェクト。
      戻り値:
      指定されたオブジェクトがこのメモリー・セグメントと等しい場合は、true
      関連項目:
    • hashCode

      int hashCode()
      このメモリー・セグメントのハッシュ・コード値を返します。
      オーバーライド:
      hashCode、クラスObject
      戻り値:
      このメモリー・セグメントのハッシュ・コード値
      関連項目:
    • copy

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

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