老师,netty中一个eventloop对应一个arena,这样的话对应线程就会到对应arena里面分配内存,然后内存分配的时候就不会发生竞争。但是我在源码中也没发现给不同的arena分配不同的连续内存啊。然后直接在chunklist都为空的时候初始化一个poolchunk,但这样的话,多线程下,不又发生内存竞争了吗?不知道我描述清楚没。
我以前写C++的时候自己做过内存池,是先malloc到一块大的内存,比如1G,然后封装到一个类里面,然后给程序调用。但是我在netty没找到这样的代码。网上好多帖子都是说各种内存分配算法,但是我就想知道不同的arena是怎么事先拿到一块“独立的“连续内存的。
总结一下:
整个用做内存池的内存有多大,何时设置的,如何设置。选Direct内存为例。
这一整块内存是如何划分给多个arena的,何时划分的。
如果未划分arena的具体内存地址,那么直接实例化poolchunk不就跟malloc一样了吗,没考虑到多线程问题。
感谢闪电侠老师,老师,你看到的话,及时给我回复哦,着急,自己没想明白。