堆外內存,
就是非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,
使用netty池化內存,要注意泄露
https://juejin.im/post/5d903c97e51d457810073dda