netty
Joel.Wang老王
要坚持~
展开
-
图解netty:FastThreadLocal实现原理分析
1 FastThreadLocal的引入背景和原理简介既然jdk已经有ThreadLocal,为何netty还要自己造个FastThreadLocal?FastThreadLocal快在哪里?这需要从jdk ThreadLocal的本身说起。如下图:在java线程中,每个线程都有一个ThreadLocalMap实例变量(如果不使用ThreadLocal,不会创建这个Map,一个线程第一次访...原创 2019-06-05 10:31:06 · 5966 阅读 · 0 评论 -
netty-Future、Promise和Listener源码分析
1 netty Future的基本使用编程语言中的future,顾名思义就是一个操作在将来才会完成,但是调用方不必同步等待结果,只要持有对应操作的future对象即可,等操作完成了,从future中获取结果。netty Future是实现其异步非阻塞IO机制的重要对象。本文从演示netty Future的基本使用开始,再到源码角度分析其实现原理,最后剖析其在netty的异步非阻塞IO中如何使用...原创 2019-06-09 22:45:53 · 1803 阅读 · 1 评论 -
(一) netty ByteBuf的分配与使用基础
本文作为netty内存管理专题的第一篇。在深究netty内存分配的底层原理之前,先来从外部了解它的基本用法。1 非池化内存的分配和使用示例代码如下,以下代码展示了直接内存缓冲的分配、读写和回收:public static void main(String[] args) throws Exception { // 获取非池化ByteBuf分配器 ByteBufAllocator al...原创 2019-07-02 07:32:33 · 679 阅读 · 0 评论 -
(四) netty内存池:技术概要
文章目录1 netty内存池概述2 netty内存池内存分配算法概述2.1 netty内存池的主要数据结构2.2 netty内存池分配粒度的分级1 netty内存池概述内存管理,按使用的范围,分为操作系统的内存管理和用户应用自己的内存管理。操作系统的内存管理是指,进程在需要时向操作系统申请分配一定量的内存资源,并在使用结束后释放和回收内存资源。常见的操作系统内存管理算法有:slab、buddy...原创 2019-07-08 00:07:29 · 669 阅读 · 0 评论 -
(二) netty非池化内存的表示:UnpooledHeapByteBuf和UnpooledDirectByteBuf
1 概述从最基础的ByteBuf开始讲解netty的内存分配,是为了后续更清楚地了解netty内存池的分配技术。目标是,了解各种ByteBuf本质上是什么?netty提供了众多的ByteBuf实现,而在我们该系列文章中,我们按内存分配的算法来分类,分为非池化ByteBuf和池化的ByteBuf。而两个主力的非池化字节缓冲UnpooledHeapByteBuf和UnpooledDirectByt...原创 2019-07-03 22:22:58 · 3236 阅读 · 1 评论 -
(六) 图解netty内存池的核心分配算法—PoolArena/PoolChunk/PoolSubpage
在前两篇文章:(四) netty内存池:技术概要和(五) netty内存池:分配器PooledByteBufAllocator和内存池字节缓冲的表示做了netty内存池方面的不少铺垫,这篇打算来把核心的分配算法都讲完,本文的结构是,先讲内存分配涉及到的各个数据结构,再分别讲各个内存粒度的分配算法,主要是huge粒度的直接分配方式,normal粒度的buddy分配算法,small和tiny粒度的s...原创 2019-07-15 07:52:15 · 1533 阅读 · 0 评论 -
(五) netty内存池:分配器PooledByteBufAllocator和内存池字节缓冲的表示
说明类图原创 2019-07-10 21:18:58 · 1793 阅读 · 0 评论 -
(三) netty非池化内存的分配与回收:UnpooledByteBufAllocator
1. 引子在上一篇文章(二) netty非池化内存的表示:UnpooledHeapByteBuf和UnpooledDirectByteBuf,介绍了各种非池化字节缓冲的分配、使用和回收。但在实践中一般不是直接调用他们的构造器来创建一个字节缓存的,而是通过分配器来分配,比如:public static void main(String[] args) throws Exception {...原创 2019-07-06 09:42:36 · 2802 阅读 · 0 评论 -
(七) 提高内存分配性能,从线程缓冲分配---PoolThreadCache
从上篇文章(六) 图解netty内存池的核心分配算法—PoolArena/PoolChunk/PoolSubpage中可以知道,netty内存池在分配粒度为tiny/small/normal的内存块时,都首先尝试从线程缓冲池PoolThreadCache分配,线程缓冲分配不成功,才分配新的内存。这么做可以明显地提高内存分配的性能。那么现在来分析,线程缓冲池中存的是什么?怎么存进去?又怎么取出来?...原创 2019-07-21 23:36:03 · 593 阅读 · 0 评论