2014-11-08 66 views
0

我一直在閱讀Norman Maurer的presentation on Netty best practices,並對使用直接緩衝區和堆緩衝區有個疑問。 One slide建議「在寫入SocketChannel時總是使用直接的ByteBuffer」,但another鼓勵在使用MessageToByteEncoder時使用堆緩衝區。我認爲我沒有在第二張幻燈片中看到細節。在MessageToByteEncoder的情況下,爲什麼使用堆緩衝區「保存額外的字節拷貝?」Netty中MessageToByteEncoder的緩衝區類型

謝謝!

回答

1

如果您需要直接對後備數組執行操作,則使用堆緩衝區可能有意義。例如,當你使用deflater/inflater,因爲它只對byte []起作用。對於所有其他情況,優先使用直接緩衝區。

+0

幸運的是你......這個人自己的答案:)。另請參閱http://stackoverflow.com/a/5671880/3993966,瞭解java中直接和非直接緩衝區之間差異的一般描述。 – 2014-11-08 21:15:22