堆外內存,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,
使用netty池化內存,要注意泄露