Netty - PooledByteBufAllocator

堆外內存,git

就是非JVM管理的,由os管理的內存,等同於c語言裏面的mallco分配的內存github

故堆外內存的好處,socket

1. 不會有GC回收,緩解gc壓力elasticsearch

2. 避免一次copy,發生到socket buffer的時候,若是是堆內內存須要copy到堆外一次post

問題,性能

回收是個問題;性能沒有heap好,分配和回收的效率都更低.net

 

https://www.jianshu.com/p/ce7c6f5cb5f63d

https://blog.csdn.net/pentiumchen/article/details/45372625netty

markblog

Netty的池化內存管理方案,能夠選擇heap或direct

大致思想,

內存大小分級,按需分配

PoolArena 內存管理池

管理一堆chunk list,一個list的chunk數是可變的

chunk由page組成,chunk大小,由pagesize和page個數決定

爲了針對小內存分佈,subpage,tiny是以16字節爲單位,small以512爲單位,個數取決於page大小

 

 

 

二叉樹組織內存塊,便於連續內存分配

一共4094個page,分11層,葉節點一個8K,到第10層,一個節點16k,9層,32k

 

 

 

 Netty會用PoolThreadLocalCache來cache buffer,

參考https://kkewwei.github.io/elasticsearch_learning/2018/07/14/Netty-PoolThreadCache%E6%BA%90%E7%A0%81%E6%8E%A2%E7%A9%B6/

 

使用netty池化內存,要注意泄露

http://www.javashuo.com/article/p-gpevncrv-du.html 

相關文章
相關標籤/搜索