1

Java nio ソケットを使用して 3 人のユーザーに送信される文字列 (メッセージ本文) と 3 つの異なるヘッダーがあります。

1 つの方法は、大きなバイト バッファーを作成し、メッセージ本文をある位置に置き、ヘッダーをメッセージ本文の前に置くことです。

このように、メッセージ本文のコピーを 1 つ作成し、ヘッダーを書き換える必要があります。私のプロジェクトでは、メッセージ本文は約 14 K バイトです。メモリ ページが 2K バイトの場合、メモリ効率の管理には効率的ではありません。

私の質問: 大きなメッセージ文字列をバイト バッファにコピーしないようにする方法はありますか? Cはポインターを使用してサポートできると思います。本当ですか?

ありがとう。

4

2 に答える 2

1

これは、書き込みを収集するためのジョブです: write(ByteBuffer[], ...) メソッド。

于 2011-06-03T10:18:46.497 に答える
1

String は作成しませんが、String に配置するテキストを使用して ByteBuffer を作成します。

注: String は可変ではないため、StringBuilder などの他のソースのコピーになります。代わりに ByteBuffer を使用すると、2 つのコピーが保存されます。

メッセージ本文を ByteBuffer に配置し、最初に十分なパディングを付けて、後でヘッダーに挿入することができます。これにより、メッセージ本文を再度コピーする必要がなくなります。

于 2011-06-02T21:00:39.907 に答える