netty源码分析
文章平均质量分 95
HelloWorld_EE
这个作者很懒,什么都没留下…
展开
-
Netty源码分析:accept
Netty源码分析:accept在介绍accept之前,先介绍下NioServerSocketChannelConfig这个类,为什么先介绍这个类呢,这是因为:在accept客户端连接时会使用该类的maxMessagesPerRead这个字段,该字段的含义为:每次读的最大信息,Netty中将accept客户端连接也认为是一种读操作。对于accept客户端连接的这种读,利用该字段表示的是一次能够接受的原创 2017-11-04 14:27:55 · 1281 阅读 · 0 评论 -
Netty源码分析:PoolSubpage
Netty源码分析:PoolSubpage在上篇介绍Netty源码分析:PoolChunk的博文中,我们分析了allocateSubpage方法(如下)的前半部分,后半部分是借助于PoolSubpage来完成的。这篇博文就介绍下PoolSubpage这个类。 private long allocateSubpage(int normCapacity) { int d = max原创 2017-10-15 17:44:41 · 1003 阅读 · 0 评论 -
Netty源码分析:PoolChunk
Netty源码分析:PoolChunkChunk主要用来组织和管理多个Page的内存分配和释放。在Netty中,Chunk中的Page被构建成一颗二叉树。本博文将从源码的角度来看下PoolChunk。1、属性和构造函数先看下PoolChunk的属性和构造函数 final class PoolChunk<T> {// PoolChunk会涉及到具体的内存,泛型T表示byte[](堆内存)、或ja原创 2017-10-15 12:52:02 · 1861 阅读 · 0 评论 -
Netty源码分析:AbstractByteBuf
Netty源码分析:AbstractByteBufByteBuf与Java NIO ByteBuffer类似,由于ByteBuffer存在一定的缺陷,具体缺陷如下:1)ByteBuffer长度固定,一旦分配,则容量不能动态扩展和收缩2)ByteBuffer只有一个标识位置的指针,读写的时候需要手动的调用flip()方法来进行从写到读模式的切换,否则读出来的内容就是错误的。而Netty实现的ByteB原创 2017-10-13 00:18:13 · 1156 阅读 · 0 评论 -
Netty源码分析:PooledByteBufAllocator
Netty源码分析:PooledByteBufAllocator无论是我们使用语句ByteBuf byteBuf = Unpooled.buffer(256);来分配buf,还是使用如下的语句来分配Buf: PooledByteBufAllocator allocator = new PooledByteBufAllocator(false); ByteBuf byte原创 2017-10-20 19:49:07 · 3610 阅读 · 0 评论 -
Netty源码分析:PoolChunkList
Netty源码分析:PoolChunkList在博文 Netty源码分析:PoolArena中我们知道,在第一次申请内存时,会调用如下的allocateNormal方法来新建一个Chunk,然后在此Chunk上分配内存。分配完成之后会将这个Chunk添加到名为qInit的PoolChunkList中。在下次分配内存时会先尝试在6个PoolChunkList来寻找chunk来分配内存。 priv原创 2017-10-19 21:29:37 · 771 阅读 · 0 评论 -
Netty源码分析:PoolArena
Netty源码分析:PoolArenaArena本身是指一块区域,在内存管理中,Memory Arena是指内存中的一大块连续的区域,PoolArena就是Netty的内存池实现类。Netty的PoolArena是由多个Chunk组成的大块内存区域,而每个Chunk则由一个或者多个Page组成(在博文Netty源码分析:PoolChunk已经明确了这点),因此,对内存的组织和管理也就主要集中在如何管原创 2017-10-16 21:55:49 · 2088 阅读 · 0 评论 -
Netty源码分析:NioEventLoop启动以及其IO操作和Task任务的处理
Netty源码分析:NioEventLoop类的execute、startThread、run方法在上篇博文分析服务端启动的过程中,我们遇到了如下的代码片段, if (eventLoop.inEventLoop()) {//判断当前线程是否为该EventLoop中拥有的线程,如果是,则直接注册,如果不是,则添加一个任务到该线程中 register原创 2017-09-26 22:23:21 · 6982 阅读 · 3 评论 -
Netty源码分析:客户端连接
Netty源码分析:客户端连接博文Netty源码分析:服务端启动全过程对服务端的启动进行了全面的分析,本篇博文将对客户端如何连接到服务端进行一个分析。一般情况下,客户端的启动代码类似如下: // Configure the client. EventLoopGroup group = new NioEventLoopGroup(); try {原创 2017-09-30 16:06:37 · 2509 阅读 · 0 评论 -
Netty源码分析:服务端启动全过程(篇幅很长)
Netty源码分析:服务端启动全过程一般服务端的代码如下所示: public final class SimpleServer { public static void main(String[] args) throws Exception { EventLoopGroup bossGroup = new NioEventLoopGroup(1);原创 2017-09-24 15:35:59 · 14056 阅读 · 2 评论 -
Netty源码分析:ChannelPipeline
Netty源码分析:ChannelPipeline在博文Netty源码分析:服务端启动全过程我们在知道NioServerSocketChannel这个类的构造函数的调用链如下: public NioServerSocketChannel() { this(newSocket(DEFAULT_SELECTOR_PROVIDER));//newSocket的功能为:利用Select原创 2017-09-29 21:46:11 · 1650 阅读 · 1 评论 -
Netty源码分析:NioEventLoopGroup
Netty学习笔记:NioEventLoopGroup在工作之余,看到自己公司的超哥(俞超)关于Netty的系列博文,讲解的很好,因此,自己在学习之余也跟了下源代码,来了解Netty,也做了相关的笔记,将形成系列博文,这是第一篇。超哥的博文地址在这里:http://www.jianshu.com/p/c5068caab217Netty版本:4.0.23.Final借用超哥的例子,一般服务端的代码如下原创 2017-09-16 22:00:20 · 6603 阅读 · 2 评论 -
Netty源码分析:ServerBootstrap
Netty学习笔记:ServerBootstrap一般服务端的代码如下所示: package com.wrh.server; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.*; import io.netty.channel.nio.NioEventLoopGroup; imp原创 2017-09-23 23:39:52 · 1901 阅读 · 0 评论 -
Netty源码分析:read
Netty源码分析:read在博文Netty源码分析:NioEventLoop启动以及其IO操作和Task任务的处理的末尾我们分析了processSelectedKey这个方法。 private static void processSelectedKey(SelectionKey k, AbstractNioChannel ch) { final NioUnsafe uns原创 2017-11-05 11:28:12 · 1035 阅读 · 0 评论