Netty - PooledByteBufAllocator


堆外內存,

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

故堆外內存的好處,

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

2. 避免一次copy,發生到socket buffer的時候,如果是堆內內存需要copy到堆外一次

問題,

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

 

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

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

mark

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池化內存,要注意泄露

https://juejin.im/post/5d903c97e51d457810073dda 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM