linux编程对分配空间进行优化
思想:
在程序启动初始化时,进行大量内存的分配(分成小块),在后续使用内存时,使用指针指向其中的空间块,减少分配内存带来的性能下降。
实现:
单块空间(一个管理者(内容:所管理空间的起始地址,结束地址,大小,下一个管理者的指针)+ 所管理的空间)
所有管理者以链表的形式连接起来。
例子:分配10000(块的数量) + 2048(块的大小) + 10(支持的单组最大线程数)
分配十组 10000 * 2048 的空间
每个线程使用自己线程号对应的那组空间
当 程序想要分配的空间 > 初始化时的单块空间(2048字节),采用malloc动态分配。
补充:
初始化的块空间的使用计数和动态malloc的空间的使用计数,都可以通过vshell计数进行查看。