為什麼 netty 要重新寫自己的 buffer 以及 channel ?

時間 2021-06-01 02:35:59

1樓:Razertory

提乙個記憶體管理的。

Bytebuffer 使用的是堆外記憶體,也就是不依賴 JRE 進行 GC。Netty 自己實現了 Bytebuffer 的記憶體管理。

2樓:

看了下其它回答基本都是針對一兩個點, Netty in Action上的比較全面些:

These are some of the advantages of the ByteBuf API:

■ It』s extensible to user-defined buffer types.

■ Transparent zero-copy is achieved by a built-in composite buffer type.

■ Capacity is expanded on demand (as with the JDK StringBuilder).

■ Switching between reader and writer modes doesn』t require calling ByteBuffer』s

flip() method.

■ Reading and writing employ distinct indices.

■ Method chaining is supported.

■ Reference counting is supported.

■ Pooling is supported.

每點要仔細解釋的話比較長, 有空的話再補. 可以去找一本看看先.

3樓:SuperChia

就是因為jdk的bytebuffer和channel用起來不方便咯,比如buffer只有乙個position指標,每次寫完還要flip一下才能讀,而netty的有readerindex和writerindex,用起來更方便了

4樓:郭寬

提供更高層次的封裝,提供更為豐富的功能

Netty的Channel只是把新的和老的IO進行了更高層的封裝,讓大家寫程式更簡單而已

5樓:

nio的ByteBuffer使用不方便,容易犯錯。寫和讀共用乙個index,經常容易犯的錯誤是寫完在讀的時候忘記flip。更詳細的可以看netty文件http://

docs.jboss.org/netty/3.

2/guide/html/architecture.htmlchapter 2.1以及http://

docs.jboss.org/netty/3.

2/api/org/jboss/netty/buffer/package-summary.html#package_description

為什麼 分 要這樣寫?

青青子衿 瀉藥!這是行書寫法。分 這種寫法,可以分為兩個方面來看 第一,可以提高書寫效率,第二,追求書法藝術上的變化。1 提高書寫效率。可以發現 分 字楷書寫法需要四筆,而這種行書寫法,只需要兩筆。這種寫法就是為了 連筆書寫 從而提高書寫效率,對漢字的筆劃和結構做出調整 以及簡省。行書 分 兩筆寫成...

寫近體詩為什麼要合格律?

馬蹄兒得得 這不是廢話嗎?簡直和問 為什麼宋朝人寫不出唐詩?一樣無厘頭。近體詩之所以叫近體詩,就是因為其在格律上有明確的要求,從而區別於古體詩。 微波澄不動 樓主正解,首先糾正乙個錯誤,古體詩是不遵格律的。概念沒了解清楚。莫理會他們說的,你的問題補充說的很好,正是格律出現的本意。格律是輔佐詩詞表達的...

為什麼要早睡,為什麼要戒菸,為什麼要對自己的行為進行約束?

不知 因為等你做到了這些,你才會發現這些才是真正的快樂!放縱自己的慾望帶來的快樂是虛假的快樂,就像抽菸,抽菸真的快樂嗎?我看未必,抽菸之所以讓你覺得快樂,是因為它暫時緩解了你的痛苦,只是暫時緩解,你抽的越多,你的菸癮就越大,沒煙抽的時候就越痛苦,玩手機也一樣,不玩就痛苦,玩了就停不下來,擼管也是一樣...