Java -- 每日一问:对比Java标准NIO类库,你知道Netty是如何实现更高性能的吗?
Posted Kevin-Dev
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java -- 每日一问:对比Java标准NIO类库,你知道Netty是如何实现更高性能的吗?相关的知识,希望对你有一定的参考价值。
典型回答
单独从性能角度,Netty 在基础的 NIO 等类库之上进行了很多改进,例如:
-
更加优雅的 Reactor 模式实现、灵活的线程模型、利用 EventLoop 等创新性的机制,可以非常高效地管理成百上千的 Channel。
-
充分利用了 Java 的 Zero-Copy 机制,并且从多种角度,“斤斤计较”般的降低内存分配和回收的开销。例如,使用池化的 Direct Buffer 等技术,在提高 IO 性能的同时,减少了对象的创建和销毁;利用反射等技术直接操纵 SelectionKey,使用数组而不是 Java 容器等。
-
使用更多本地代码。例如,直接利用 JNI 调用 Open SSL 等方式,获得比 Java 内建 SSL 引擎更好的性能。
-
在通信协议、序列化等其他角度的优化。
总的来说,Netty 并没有 Java 核心类库那些强烈的通用性、跨平台等各种负担,针对性能等特定目标以及 Linux 等特定环境,采取了一些极致的优化手段。
你的朋友是不是也在准备面试呢?你可以“请朋友读”,把今天的题目分享给好友,或许你能帮到他。
以上是关于Java -- 每日一问:对比Java标准NIO类库,你知道Netty是如何实现更高性能的吗?的主要内容,如果未能解决你的问题,请参考以下文章
Java -- 每日一问:Java提供了哪些IO方式? NIO如何实现多路复用?
Java -- 每日一问:对比 HashtableHashMapTreeMap 有什么不同?
Java -- 每日一问:对比 VectorArrayListLinkedList 有何区别?