ByteBufを作成してに送信するには、write
またはwriteAndFlush
メソッドを使用します。Netty 4.1:ioBuffer v.s. directBuffer v.s. heapBuffer
私が理解しているように、ダイレクトバッファはヒープバッファよりも優れています。これは、後者がJVMによって管理され、送信時にダイレクトバッファにコピーする必要があるためです。
ダイレクトバッファはJVMで管理されていないため、多くの直接バッファを割り当てると、OutOfMemoryError
,が正しいことがありますか?
そして、私は別の方法ByteBufAllocator.ioBuffer()
がある文書を通知は I/Oに適しているByteBuf
、好ましくは、直接バッファを割り当てる
言います。
私はそれがこのように動作を推測:
ByteBufAllocator
は二つのプール、ダイレクトバッファのための1つのプール、ヒープバッファのための他を管理します。ダイレクトバッファーに十分なスペースがない場合、これはヒープバッファーから割り振ります。 私はそうですか?
ByteBufAllocator
はダイレクトバッファのプールサイズをどのように決定しますか?
を使用する下がる、限り、それはクラスパス上
sun.misc.Unsafe
を見つけることができるよう、あなたのためdirectBuffer
を呼び出します。私は、合計で16ギガバイトの物理メモリがあると、私はたったの約8ギガバイトにJVMのヒープを構成する必要があります(50%)ので、他のものはダイレクトバッファーで使用できますか? –