- 博客(7)
- 资源 (1)
- 收藏
- 关注
原创 netty系列
最近花时间研究了下 Netty 的内存管理实现,感觉挺有意思的,但也明显地感觉到,这部分功能要比其他功能模块更难理解。在这个过程中,我一直在想,如果能有这么一张图,能够说明内存管理的模块组成、各个模块之间的关系以及其实现原理,那么我就可以以更短的时间读懂相关源码了。因此,我将自己的一些理解画成了图。如果你也对这块内容感兴趣,兴许这篇文章能有所帮助。本文分析的 netty 版本是 4.1.51.Final。如果你是从 github 拉的最新源码,或者是 4.1.65.Final 之后的版本,由于已经
2021-11-26 01:06:22 186
原创 netty的ChannelPipeline是如何工作的?
netty 中每个 channel 都会绑定了一个 pipeline,当有入站事件或出站操作时,会由 pipeline 中的 handler 进行拦截处理。事件处理流程如上图所示,入站事件产生后,通过调用ChannelHandlerContext.fireXXXAPI 在Inbound Handler链上向后传播,每个 handler 只处理自己关心的逻辑。同样地,出站事件经Outbound Handler处理并向前传播,最终调用 socket 的 API 将数据发送出去...
2021-11-26 00:44:42 595
原创 netty中ChannelFuture.sync()的作用是什么?
如果你使用过 netty,你一定见过下面两行代码,它们可以说是创建一个 netty server 的标配代码 12 ChannelFuture future = bootstrap.bind(port).sync();future.channel().closeFuture().sync(); 不知道你有没想过这里面的sync()的作用是什么,如果去掉会有什么问题?bootstrap.bind(port).sync() 分析先来一步一步..
2021-11-26 00:38:16 6195 3
原创 如何查找 jdk 中的 native 实现
jdk 中有很多 native 方法,比如 Object 类的 registerNatives 方法、String 类的 intern 方法等。这些方法在 java 层面只有接口定义,具体的方法实现则是在 jdk 中,采用 c/c++ 实现。本文主要讲下如何找到 native 方法的实现。查找的思路在 java 中,为了实现特定的功能,有时需要调用非 java 代码实现的函数(比如 c/c++ 函数),JNI(Java Native Interface)提供了这个能力。JNI 规定在 java
2021-11-26 00:34:03 1790
原创 netty的direct memory大小设置
最近遇到一个 netty 的 OutOfDirectMemoryError 报错,是在分配 direct memory 时内存不足导致的,看了下报错提示,要分配的内存大小为 16M,剩余的空间不足。这里 max direct memory 大约有 7G,于是就有一个疑问,这个值是怎么设置的?代码分析这里使用的 netty 版本是 4.1.14.Final,如下是报错时的调用栈信息,主要关注下PlatformDependent这个类。复制 1234567891..
2021-11-26 00:29:01 3852
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人