netty内存知识整理

 

1.ByteBuf

api:  read   ,write,set,mark,reset

byteBuf分类图:

 

1.pooled和u'npooled

 

pooled:从预先分配好的内存中分配,unpooled:每次申请新内存  就是池化和非池化的区别

2.unsafe和非unsafe

unsafe:可以直接拿到jvm的内存,依赖jdk的unsafe ( JDK的rt.jar包中的Unsafe类提供了硬件级别的原子性操作,Unsafe类中的方法都是native方法 )其实就是在jdk的bytebuff包装了一下

 

unsafe是通过内存地址和下标去拿数据,非unsafe是通过数组和下标去拿数据

 

3.heap和direct

 

heap:从堆上内存分配就是数组byte[] array  unpool从array拿, pool从池中拿

directbuffer:堆外内存,不参与gc过程

 

4.ByteBufAllocator内存分配器

 

5. Recycler

https://blog.csdn.net/alex_xfboy/article/details/90384332

6.byteBuf释放

1.连续的内存区段加入缓存(取得时候也是从缓存先取)

2.如果缓存满了 ->标记连续的内存区段未使用

3.ByteBuf加入对象池Recycler

 

问题:

1.怎么解决多线程得内存分配:fastThreadlocal ; 每个线程分配一个arean进行内存分配,线程进行隔离

2.不同大小的内存是如何进行分配得:使用对象池,缓存,二叉树分配,位图的技术来优化

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值