-1

最小限のメモリしか割り当てず、gcにヒットすることはめったにない、Javaで単純な転送サーバーを構築しようとしています。事前に割り当てられたバッファを使用して、出力ストリームと入力ストリームとの間でデータをコピーできますが、新しい接続ごとに約10kのメモリが割り当てられているようです。これを回避するために、接続が閉じられた後にSocketオブジェクトを再利用する簡単な方法はありますか(これは、Socketが再利用される場合に内部で追加のメモリを割り当てる必要がないことを前提としています)?

明確にするために、「ソケット」とは、ソケットの一般的な概念ではなく、Javaクラスを指します。また、「再利用」とは、オブジェクトによって割り当てられたメモリを再利用して、ガベージコレクションを通じてそのメモリを再利用する必要がないようにすることを意味します。この動機は、ガベージコレクションのために一時停止する必要のないシンプルで応答性の高いサーバーを作成することです(C / C ++または独自のJVMを使用できることはわかっていますが、可能性としてこのソリューションを模索しています) 。

4

1 に答える 1

4

いいえ、ソケットは一度閉じられるとJavaで再利用できません。

于 2013-02-02T17:47:13.613 に答える