系统从堆区每分配一块内存时,都会额外多分配一些,用来记录这块内存的信息,在回收时使用。如果小块堆区内存大量分配,则耗费在记录信息用的内存将会很可观。
Linux
使用GNU-C库进行内存的分配与回收。对于小于128K的内存块,GNU-C库是自己进行管理的,以便减少内存碎片,提高分配效率。而且一经分配,除非
进程退出,否则不会还给操作系统。不断分配和回收不同大小的小于128K的堆区内存,会使进程占用的内存不断膨胀。
栈区的内存分配是最快的(应该是cache miss少),回收是自动的。所以,能用栈区内存就应该使用栈区内存。