次のような利点は、NIOの下で、伝統的なIOに比べて言いました:
- 伝統的なIOデータ転送要求を処理する際、各送信のための要求は、スレッドを生成するには、IO例外は、スレッドがブロックされている場合、回復後IO処理スレッドウェイク。同時に多数の接続を処理する場合、多数のスレッドがインスタンス化されたオブジェクトです。インスタンス化と各スレッドの回復は、リソースを消費するTLABを割り当てるために、JVMの必要性を必要とし、その後、TLABを初期化し、最終的に結合スレッド、時間の終わりをスレッドとCPUリソースを必要TLABを回収する必要があります。
- NIOセレクタは、それぞれの処理イベント駆動型イベントIOを形成するために、ファイルディスクリプタ内部使用をポーリングIOストリームを使用するか、またはポーリングします。スレッドオブジェクトのほんの一例同時に、CPUリソースの利用効率を高めるために、複雑なを縫います。
- CPUタイムスライスに割り当てられ、単一間接物理コアマルチスレッドの形で各スレッドターン。より長いスレッド、短いか長い期間配分サイクルに割り当てられた各タイムスライス、スレッドの切り替えにCPUに費やした多くの時間。同期(SYNC Tlab)、同期メインメモリ変数に同期した、次のスレッドのデータをロードするなど、それらはCPUリソースのスレッドデータを切り替えるスレッドを含むスレッドを消費しています。
- 同時に多数の接続ではなく、多くのアクティブな接続を処理する場合、従来のIOに比べNIO入射応答モードは、優れた性能を有します。
- NIOのFileChannelまた、直接カーネルバッファを介してゲートウェイへのデータのゼロコピーの送信、従来に比べてIOの形で、データを直接物理(ハードディスクなど)から、ユーザ空間にコピーする必要はなく、ポールを提供性能を大幅に改善しました。
- NIO(ここでメモリは仮想メモリではなく物理メモリを指す)が直接メモリにマップされたファイルであろう、れるMappedByteBufferを提供し、大幅IOスループットを向上させることができます。